package de.thwildau.tm.moses.avro.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.common.util.Enumerator;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import de.thwildau.tm.moses.avro.services.IdlGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalIdlParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_INT", "RULE_HEX", "RULE_DOUBLE", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'protocol'", "'{'", "'}'", "'error'", "'record'", "'enum'", "'fixed'", "'import'", "'throws'", "'='", "'('", "')'", "'oneway'", "'`'", "'@aliases'", "'['", "','", "']'", "'@order'", "'@namespace'", "'@java_class'", "'idl'", "'schema'", "'array'", "'<'", "'>'", "'map'", "'union'", "';'", "'false'", "'true'", "'int'", "'long'", "'string'", "'boolean'", "'float'", "'double'", "'null'", "'bytes'", "'void'"
    };
    public static final int RULE_ID=4;
    public static final int T__29=29;
    public static final int T__28=28;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=12;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int EOF=-1;
    public static final int T__19=19;
    public static final int RULE_HEX=6;
    public static final int T__16=16;
    public static final int T__51=51;
    public static final int T__52=52;
    public static final int T__15=15;
    public static final int T__18=18;
    public static final int T__17=17;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_INT=5;
    public static final int T__50=50;
    public static final int T__42=42;
    public static final int T__43=43;
    public static final int T__40=40;
    public static final int T__41=41;
    public static final int T__46=46;
    public static final int T__47=47;
    public static final int T__44=44;
    public static final int T__45=45;
    public static final int T__48=48;
    public static final int T__49=49;
    public static final int RULE_SL_COMMENT=10;
    public static final int RULE_DOUBLE=7;
    public static final int RULE_ML_COMMENT=9;
    public static final int T__30=30;
    public static final int T__31=31;
    public static final int RULE_STRING=8;
    public static final int T__32=32;
    public static final int T__33=33;
    public static final int T__34=34;
    public static final int T__35=35;
    public static final int T__36=36;
    public static final int T__37=37;
    public static final int T__38=38;
    public static final int T__39=39;
    public static final int RULE_WS=11;

    // delegates
    // delegators


        public InternalIdlParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalIdlParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalIdlParser.tokenNames; }
    public String getGrammarFileName() { return "../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g"; }



     	private IdlGrammarAccess grammarAccess;
     	
        public InternalIdlParser(TokenStream input, IdlGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "AvroIdl";	
       	}
       	
       	@Override
       	protected IdlGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleAvroIdl"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:68:1: entryRuleAvroIdl returns [EObject current=null] : iv_ruleAvroIdl= ruleAvroIdl EOF ;
    public final EObject entryRuleAvroIdl() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAvroIdl = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:69:2: (iv_ruleAvroIdl= ruleAvroIdl EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:70:2: iv_ruleAvroIdl= ruleAvroIdl EOF
            {
             newCompositeNode(grammarAccess.getAvroIdlRule()); 
            pushFollow(FOLLOW_ruleAvroIdl_in_entryRuleAvroIdl75);
            iv_ruleAvroIdl=ruleAvroIdl();

            state._fsp--;

             current =iv_ruleAvroIdl; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAvroIdl85); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAvroIdl"


    // $ANTLR start "ruleAvroIdl"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:77:1: ruleAvroIdl returns [EObject current=null] : ( ( (lv_nameSpace_0_0= ruleNamespaceAnnotation ) )? ( (lv_protocol_1_0= ruleProtocol ) ) ) ;
    public final EObject ruleAvroIdl() throws RecognitionException {
        EObject current = null;

        EObject lv_nameSpace_0_0 = null;

        EObject lv_protocol_1_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:80:28: ( ( ( (lv_nameSpace_0_0= ruleNamespaceAnnotation ) )? ( (lv_protocol_1_0= ruleProtocol ) ) ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:81:1: ( ( (lv_nameSpace_0_0= ruleNamespaceAnnotation ) )? ( (lv_protocol_1_0= ruleProtocol ) ) )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:81:1: ( ( (lv_nameSpace_0_0= ruleNamespaceAnnotation ) )? ( (lv_protocol_1_0= ruleProtocol ) ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:81:2: ( (lv_nameSpace_0_0= ruleNamespaceAnnotation ) )? ( (lv_protocol_1_0= ruleProtocol ) )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:81:2: ( (lv_nameSpace_0_0= ruleNamespaceAnnotation ) )?
            int alt1=2;
            int LA1_0 = input.LA(1);

            if ( (LA1_0==32) ) {
                alt1=1;
            }
            switch (alt1) {
                case 1 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:82:1: (lv_nameSpace_0_0= ruleNamespaceAnnotation )
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:82:1: (lv_nameSpace_0_0= ruleNamespaceAnnotation )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:83:3: lv_nameSpace_0_0= ruleNamespaceAnnotation
                    {
                     
                    	        newCompositeNode(grammarAccess.getAvroIdlAccess().getNameSpaceNamespaceAnnotationParserRuleCall_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleNamespaceAnnotation_in_ruleAvroIdl131);
                    lv_nameSpace_0_0=ruleNamespaceAnnotation();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getAvroIdlRule());
                    	        }
                           		set(
                           			current, 
                           			"nameSpace",
                            		lv_nameSpace_0_0, 
                            		"NamespaceAnnotation");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }

            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:99:3: ( (lv_protocol_1_0= ruleProtocol ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:100:1: (lv_protocol_1_0= ruleProtocol )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:100:1: (lv_protocol_1_0= ruleProtocol )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:101:3: lv_protocol_1_0= ruleProtocol
            {
             
            	        newCompositeNode(grammarAccess.getAvroIdlAccess().getProtocolProtocolParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleProtocol_in_ruleAvroIdl153);
            lv_protocol_1_0=ruleProtocol();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getAvroIdlRule());
            	        }
                   		set(
                   			current, 
                   			"protocol",
                    		lv_protocol_1_0, 
                    		"Protocol");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAvroIdl"


    // $ANTLR start "entryRuleProtocol"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:125:1: entryRuleProtocol returns [EObject current=null] : iv_ruleProtocol= ruleProtocol EOF ;
    public final EObject entryRuleProtocol() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleProtocol = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:126:2: (iv_ruleProtocol= ruleProtocol EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:127:2: iv_ruleProtocol= ruleProtocol EOF
            {
             newCompositeNode(grammarAccess.getProtocolRule()); 
            pushFollow(FOLLOW_ruleProtocol_in_entryRuleProtocol189);
            iv_ruleProtocol=ruleProtocol();

            state._fsp--;

             current =iv_ruleProtocol; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleProtocol199); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleProtocol"


    // $ANTLR start "ruleProtocol"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:134:1: ruleProtocol returns [EObject current=null] : (otherlv_0= 'protocol' ( (lv_protocolName_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_imports_3_0= ruleImports ) )* ( (lv_definitions_4_0= ruleDefinitions ) )* otherlv_5= '}' ) ;
    public final EObject ruleProtocol() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_protocolName_1_0=null;
        Token otherlv_2=null;
        Token otherlv_5=null;
        EObject lv_imports_3_0 = null;

        EObject lv_definitions_4_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:137:28: ( (otherlv_0= 'protocol' ( (lv_protocolName_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_imports_3_0= ruleImports ) )* ( (lv_definitions_4_0= ruleDefinitions ) )* otherlv_5= '}' ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:138:1: (otherlv_0= 'protocol' ( (lv_protocolName_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_imports_3_0= ruleImports ) )* ( (lv_definitions_4_0= ruleDefinitions ) )* otherlv_5= '}' )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:138:1: (otherlv_0= 'protocol' ( (lv_protocolName_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_imports_3_0= ruleImports ) )* ( (lv_definitions_4_0= ruleDefinitions ) )* otherlv_5= '}' )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:138:3: otherlv_0= 'protocol' ( (lv_protocolName_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_imports_3_0= ruleImports ) )* ( (lv_definitions_4_0= ruleDefinitions ) )* otherlv_5= '}'
            {
            otherlv_0=(Token)match(input,13,FOLLOW_13_in_ruleProtocol236); 

                	newLeafNode(otherlv_0, grammarAccess.getProtocolAccess().getProtocolKeyword_0());
                
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:142:1: ( (lv_protocolName_1_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:143:1: (lv_protocolName_1_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:143:1: (lv_protocolName_1_0= RULE_ID )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:144:3: lv_protocolName_1_0= RULE_ID
            {
            lv_protocolName_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleProtocol253); 

            			newLeafNode(lv_protocolName_1_0, grammarAccess.getProtocolAccess().getProtocolNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getProtocolRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"protocolName",
                    		lv_protocolName_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,14,FOLLOW_14_in_ruleProtocol270); 

                	newLeafNode(otherlv_2, grammarAccess.getProtocolAccess().getLeftCurlyBracketKeyword_2());
                
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:164:1: ( (lv_imports_3_0= ruleImports ) )*
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( (LA2_0==20) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:165:1: (lv_imports_3_0= ruleImports )
            	    {
            	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:165:1: (lv_imports_3_0= ruleImports )
            	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:166:3: lv_imports_3_0= ruleImports
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getProtocolAccess().getImportsImportsParserRuleCall_3_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleImports_in_ruleProtocol291);
            	    lv_imports_3_0=ruleImports();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getProtocolRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"imports",
            	            		lv_imports_3_0, 
            	            		"Imports");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop2;
                }
            } while (true);

            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:182:3: ( (lv_definitions_4_0= ruleDefinitions ) )*
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( (LA3_0==RULE_ID||(LA3_0>=16 && LA3_0<=19)||LA3_0==27||(LA3_0>=31 && LA3_0<=33)||LA3_0==36||LA3_0==39||(LA3_0>=44 && LA3_0<=52)) ) {
                    alt3=1;
                }


                switch (alt3) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:183:1: (lv_definitions_4_0= ruleDefinitions )
            	    {
            	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:183:1: (lv_definitions_4_0= ruleDefinitions )
            	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:184:3: lv_definitions_4_0= ruleDefinitions
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getProtocolAccess().getDefinitionsDefinitionsParserRuleCall_4_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleDefinitions_in_ruleProtocol313);
            	    lv_definitions_4_0=ruleDefinitions();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getProtocolRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"definitions",
            	            		lv_definitions_4_0, 
            	            		"Definitions");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop3;
                }
            } while (true);

            otherlv_5=(Token)match(input,15,FOLLOW_15_in_ruleProtocol326); 

                	newLeafNode(otherlv_5, grammarAccess.getProtocolAccess().getRightCurlyBracketKeyword_5());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleProtocol"


    // $ANTLR start "entryRuleDefinitions"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:212:1: entryRuleDefinitions returns [EObject current=null] : iv_ruleDefinitions= ruleDefinitions EOF ;
    public final EObject entryRuleDefinitions() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDefinitions = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:213:2: (iv_ruleDefinitions= ruleDefinitions EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:214:2: iv_ruleDefinitions= ruleDefinitions EOF
            {
             newCompositeNode(grammarAccess.getDefinitionsRule()); 
            pushFollow(FOLLOW_ruleDefinitions_in_entryRuleDefinitions362);
            iv_ruleDefinitions=ruleDefinitions();

            state._fsp--;

             current =iv_ruleDefinitions; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDefinitions372); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDefinitions"


    // $ANTLR start "ruleDefinitions"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:221:1: ruleDefinitions returns [EObject current=null] : (this_Enum_0= ruleEnum | this_FixedLengthField_1= ruleFixedLengthField | this_Record_2= ruleRecord | this_Error_3= ruleError | this_BaseTypeRef_4= ruleBaseTypeRef | this_ComplexTypeRef_5= ruleComplexTypeRef | this_RPCMessage_6= ruleRPCMessage | this_Annotation_7= ruleAnnotation ) ;
    public final EObject ruleDefinitions() throws RecognitionException {
        EObject current = null;

        EObject this_Enum_0 = null;

        EObject this_FixedLengthField_1 = null;

        EObject this_Record_2 = null;

        EObject this_Error_3 = null;

        EObject this_BaseTypeRef_4 = null;

        EObject this_ComplexTypeRef_5 = null;

        EObject this_RPCMessage_6 = null;

        EObject this_Annotation_7 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:224:28: ( (this_Enum_0= ruleEnum | this_FixedLengthField_1= ruleFixedLengthField | this_Record_2= ruleRecord | this_Error_3= ruleError | this_BaseTypeRef_4= ruleBaseTypeRef | this_ComplexTypeRef_5= ruleComplexTypeRef | this_RPCMessage_6= ruleRPCMessage | this_Annotation_7= ruleAnnotation ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:225:1: (this_Enum_0= ruleEnum | this_FixedLengthField_1= ruleFixedLengthField | this_Record_2= ruleRecord | this_Error_3= ruleError | this_BaseTypeRef_4= ruleBaseTypeRef | this_ComplexTypeRef_5= ruleComplexTypeRef | this_RPCMessage_6= ruleRPCMessage | this_Annotation_7= ruleAnnotation )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:225:1: (this_Enum_0= ruleEnum | this_FixedLengthField_1= ruleFixedLengthField | this_Record_2= ruleRecord | this_Error_3= ruleError | this_BaseTypeRef_4= ruleBaseTypeRef | this_ComplexTypeRef_5= ruleComplexTypeRef | this_RPCMessage_6= ruleRPCMessage | this_Annotation_7= ruleAnnotation )
            int alt4=8;
            alt4 = dfa4.predict(input);
            switch (alt4) {
                case 1 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:226:5: this_Enum_0= ruleEnum
                    {
                     
                            newCompositeNode(grammarAccess.getDefinitionsAccess().getEnumParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleEnum_in_ruleDefinitions419);
                    this_Enum_0=ruleEnum();

                    state._fsp--;

                     
                            current = this_Enum_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:236:5: this_FixedLengthField_1= ruleFixedLengthField
                    {
                     
                            newCompositeNode(grammarAccess.getDefinitionsAccess().getFixedLengthFieldParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleFixedLengthField_in_ruleDefinitions446);
                    this_FixedLengthField_1=ruleFixedLengthField();

                    state._fsp--;

                     
                            current = this_FixedLengthField_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:246:5: this_Record_2= ruleRecord
                    {
                     
                            newCompositeNode(grammarAccess.getDefinitionsAccess().getRecordParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleRecord_in_ruleDefinitions473);
                    this_Record_2=ruleRecord();

                    state._fsp--;

                     
                            current = this_Record_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 4 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:256:5: this_Error_3= ruleError
                    {
                     
                            newCompositeNode(grammarAccess.getDefinitionsAccess().getErrorParserRuleCall_3()); 
                        
                    pushFollow(FOLLOW_ruleError_in_ruleDefinitions500);
                    this_Error_3=ruleError();

                    state._fsp--;

                     
                            current = this_Error_3; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 5 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:266:5: this_BaseTypeRef_4= ruleBaseTypeRef
                    {
                     
                            newCompositeNode(grammarAccess.getDefinitionsAccess().getBaseTypeRefParserRuleCall_4()); 
                        
                    pushFollow(FOLLOW_ruleBaseTypeRef_in_ruleDefinitions527);
                    this_BaseTypeRef_4=ruleBaseTypeRef();

                    state._fsp--;

                     
                            current = this_BaseTypeRef_4; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 6 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:276:5: this_ComplexTypeRef_5= ruleComplexTypeRef
                    {
                     
                            newCompositeNode(grammarAccess.getDefinitionsAccess().getComplexTypeRefParserRuleCall_5()); 
                        
                    pushFollow(FOLLOW_ruleComplexTypeRef_in_ruleDefinitions554);
                    this_ComplexTypeRef_5=ruleComplexTypeRef();

                    state._fsp--;

                     
                            current = this_ComplexTypeRef_5; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 7 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:286:5: this_RPCMessage_6= ruleRPCMessage
                    {
                     
                            newCompositeNode(grammarAccess.getDefinitionsAccess().getRPCMessageParserRuleCall_6()); 
                        
                    pushFollow(FOLLOW_ruleRPCMessage_in_ruleDefinitions581);
                    this_RPCMessage_6=ruleRPCMessage();

                    state._fsp--;

                     
                            current = this_RPCMessage_6; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 8 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:296:5: this_Annotation_7= ruleAnnotation
                    {
                     
                            newCompositeNode(grammarAccess.getDefinitionsAccess().getAnnotationParserRuleCall_7()); 
                        
                    pushFollow(FOLLOW_ruleAnnotation_in_ruleDefinitions608);
                    this_Annotation_7=ruleAnnotation();

                    state._fsp--;

                     
                            current = this_Annotation_7; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDefinitions"


    // $ANTLR start "entryRuleReservedIdentifiers"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:312:1: entryRuleReservedIdentifiers returns [String current=null] : iv_ruleReservedIdentifiers= ruleReservedIdentifiers EOF ;
    public final String entryRuleReservedIdentifiers() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleReservedIdentifiers = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:313:2: (iv_ruleReservedIdentifiers= ruleReservedIdentifiers EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:314:2: iv_ruleReservedIdentifiers= ruleReservedIdentifiers EOF
            {
             newCompositeNode(grammarAccess.getReservedIdentifiersRule()); 
            pushFollow(FOLLOW_ruleReservedIdentifiers_in_entryRuleReservedIdentifiers644);
            iv_ruleReservedIdentifiers=ruleReservedIdentifiers();

            state._fsp--;

             current =iv_ruleReservedIdentifiers.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleReservedIdentifiers655); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleReservedIdentifiers"


    // $ANTLR start "ruleReservedIdentifiers"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:321:1: ruleReservedIdentifiers returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'error' | kw= 'record' | kw= 'enum' | kw= 'fixed' | kw= 'import' | kw= 'throws' ) ;
    public final AntlrDatatypeRuleToken ruleReservedIdentifiers() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:324:28: ( (kw= 'error' | kw= 'record' | kw= 'enum' | kw= 'fixed' | kw= 'import' | kw= 'throws' ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:325:1: (kw= 'error' | kw= 'record' | kw= 'enum' | kw= 'fixed' | kw= 'import' | kw= 'throws' )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:325:1: (kw= 'error' | kw= 'record' | kw= 'enum' | kw= 'fixed' | kw= 'import' | kw= 'throws' )
            int alt5=6;
            switch ( input.LA(1) ) {
            case 16:
                {
                alt5=1;
                }
                break;
            case 17:
                {
                alt5=2;
                }
                break;
            case 18:
                {
                alt5=3;
                }
                break;
            case 19:
                {
                alt5=4;
                }
                break;
            case 20:
                {
                alt5=5;
                }
                break;
            case 21:
                {
                alt5=6;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 5, 0, input);

                throw nvae;
            }

            switch (alt5) {
                case 1 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:326:2: kw= 'error'
                    {
                    kw=(Token)match(input,16,FOLLOW_16_in_ruleReservedIdentifiers693); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getReservedIdentifiersAccess().getErrorKeyword_0()); 
                        

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:333:2: kw= 'record'
                    {
                    kw=(Token)match(input,17,FOLLOW_17_in_ruleReservedIdentifiers712); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getReservedIdentifiersAccess().getRecordKeyword_1()); 
                        

                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:340:2: kw= 'enum'
                    {
                    kw=(Token)match(input,18,FOLLOW_18_in_ruleReservedIdentifiers731); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getReservedIdentifiersAccess().getEnumKeyword_2()); 
                        

                    }
                    break;
                case 4 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:347:2: kw= 'fixed'
                    {
                    kw=(Token)match(input,19,FOLLOW_19_in_ruleReservedIdentifiers750); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getReservedIdentifiersAccess().getFixedKeyword_3()); 
                        

                    }
                    break;
                case 5 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:354:2: kw= 'import'
                    {
                    kw=(Token)match(input,20,FOLLOW_20_in_ruleReservedIdentifiers769); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getReservedIdentifiersAccess().getImportKeyword_4()); 
                        

                    }
                    break;
                case 6 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:361:2: kw= 'throws'
                    {
                    kw=(Token)match(input,21,FOLLOW_21_in_ruleReservedIdentifiers788); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getReservedIdentifiersAccess().getThrowsKeyword_5()); 
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleReservedIdentifiers"


    // $ANTLR start "entryRuleError"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:374:1: entryRuleError returns [EObject current=null] : iv_ruleError= ruleError EOF ;
    public final EObject entryRuleError() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleError = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:375:2: (iv_ruleError= ruleError EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:376:2: iv_ruleError= ruleError EOF
            {
             newCompositeNode(grammarAccess.getErrorRule()); 
            pushFollow(FOLLOW_ruleError_in_entryRuleError828);
            iv_ruleError=ruleError();

            state._fsp--;

             current =iv_ruleError; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleError838); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleError"


    // $ANTLR start "ruleError"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:383:1: ruleError returns [EObject current=null] : (otherlv_0= 'error' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_fields_3_0= ruleField ) )* otherlv_4= '}' ) ;
    public final EObject ruleError() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_fields_3_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:386:28: ( (otherlv_0= 'error' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_fields_3_0= ruleField ) )* otherlv_4= '}' ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:387:1: (otherlv_0= 'error' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_fields_3_0= ruleField ) )* otherlv_4= '}' )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:387:1: (otherlv_0= 'error' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_fields_3_0= ruleField ) )* otherlv_4= '}' )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:387:3: otherlv_0= 'error' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_fields_3_0= ruleField ) )* otherlv_4= '}'
            {
            otherlv_0=(Token)match(input,16,FOLLOW_16_in_ruleError875); 

                	newLeafNode(otherlv_0, grammarAccess.getErrorAccess().getErrorKeyword_0());
                
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:391:1: ( (lv_name_1_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:392:1: (lv_name_1_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:392:1: (lv_name_1_0= RULE_ID )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:393:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleError892); 

            			newLeafNode(lv_name_1_0, grammarAccess.getErrorAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getErrorRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,14,FOLLOW_14_in_ruleError909); 

                	newLeafNode(otherlv_2, grammarAccess.getErrorAccess().getLeftCurlyBracketKeyword_2());
                
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:413:1: ( (lv_fields_3_0= ruleField ) )*
            loop6:
            do {
                int alt6=2;
                int LA6_0 = input.LA(1);

                if ( (LA6_0==RULE_ID||LA6_0==36||(LA6_0>=39 && LA6_0<=40)||(LA6_0>=44 && LA6_0<=52)) ) {
                    alt6=1;
                }


                switch (alt6) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:414:1: (lv_fields_3_0= ruleField )
            	    {
            	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:414:1: (lv_fields_3_0= ruleField )
            	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:415:3: lv_fields_3_0= ruleField
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getErrorAccess().getFieldsFieldParserRuleCall_3_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleField_in_ruleError930);
            	    lv_fields_3_0=ruleField();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getErrorRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"fields",
            	            		lv_fields_3_0, 
            	            		"Field");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop6;
                }
            } while (true);

            otherlv_4=(Token)match(input,15,FOLLOW_15_in_ruleError943); 

                	newLeafNode(otherlv_4, grammarAccess.getErrorAccess().getRightCurlyBracketKeyword_4());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleError"


    // $ANTLR start "entryRuleRecord"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:443:1: entryRuleRecord returns [EObject current=null] : iv_ruleRecord= ruleRecord EOF ;
    public final EObject entryRuleRecord() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRecord = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:444:2: (iv_ruleRecord= ruleRecord EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:445:2: iv_ruleRecord= ruleRecord EOF
            {
             newCompositeNode(grammarAccess.getRecordRule()); 
            pushFollow(FOLLOW_ruleRecord_in_entryRuleRecord979);
            iv_ruleRecord=ruleRecord();

            state._fsp--;

             current =iv_ruleRecord; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRecord989); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRecord"


    // $ANTLR start "ruleRecord"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:452:1: ruleRecord returns [EObject current=null] : (otherlv_0= 'record' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( ( (lv_annotation_3_0= ruleAnnotation ) )? ( (lv_fields_4_0= ruleField ) ) )* otherlv_5= '}' ) ;
    public final EObject ruleRecord() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_5=null;
        EObject lv_annotation_3_0 = null;

        EObject lv_fields_4_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:455:28: ( (otherlv_0= 'record' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( ( (lv_annotation_3_0= ruleAnnotation ) )? ( (lv_fields_4_0= ruleField ) ) )* otherlv_5= '}' ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:456:1: (otherlv_0= 'record' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( ( (lv_annotation_3_0= ruleAnnotation ) )? ( (lv_fields_4_0= ruleField ) ) )* otherlv_5= '}' )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:456:1: (otherlv_0= 'record' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( ( (lv_annotation_3_0= ruleAnnotation ) )? ( (lv_fields_4_0= ruleField ) ) )* otherlv_5= '}' )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:456:3: otherlv_0= 'record' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( ( (lv_annotation_3_0= ruleAnnotation ) )? ( (lv_fields_4_0= ruleField ) ) )* otherlv_5= '}'
            {
            otherlv_0=(Token)match(input,17,FOLLOW_17_in_ruleRecord1026); 

                	newLeafNode(otherlv_0, grammarAccess.getRecordAccess().getRecordKeyword_0());
                
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:460:1: ( (lv_name_1_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:461:1: (lv_name_1_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:461:1: (lv_name_1_0= RULE_ID )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:462:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRecord1043); 

            			newLeafNode(lv_name_1_0, grammarAccess.getRecordAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getRecordRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,14,FOLLOW_14_in_ruleRecord1060); 

                	newLeafNode(otherlv_2, grammarAccess.getRecordAccess().getLeftCurlyBracketKeyword_2());
                
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:482:1: ( ( (lv_annotation_3_0= ruleAnnotation ) )? ( (lv_fields_4_0= ruleField ) ) )*
            loop8:
            do {
                int alt8=2;
                int LA8_0 = input.LA(1);

                if ( (LA8_0==RULE_ID||LA8_0==27||(LA8_0>=31 && LA8_0<=33)||LA8_0==36||(LA8_0>=39 && LA8_0<=40)||(LA8_0>=44 && LA8_0<=52)) ) {
                    alt8=1;
                }


                switch (alt8) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:482:2: ( (lv_annotation_3_0= ruleAnnotation ) )? ( (lv_fields_4_0= ruleField ) )
            	    {
            	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:482:2: ( (lv_annotation_3_0= ruleAnnotation ) )?
            	    int alt7=2;
            	    int LA7_0 = input.LA(1);

            	    if ( (LA7_0==27||(LA7_0>=31 && LA7_0<=33)) ) {
            	        alt7=1;
            	    }
            	    switch (alt7) {
            	        case 1 :
            	            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:483:1: (lv_annotation_3_0= ruleAnnotation )
            	            {
            	            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:483:1: (lv_annotation_3_0= ruleAnnotation )
            	            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:484:3: lv_annotation_3_0= ruleAnnotation
            	            {
            	             
            	            	        newCompositeNode(grammarAccess.getRecordAccess().getAnnotationAnnotationParserRuleCall_3_0_0()); 
            	            	    
            	            pushFollow(FOLLOW_ruleAnnotation_in_ruleRecord1082);
            	            lv_annotation_3_0=ruleAnnotation();

            	            state._fsp--;


            	            	        if (current==null) {
            	            	            current = createModelElementForParent(grammarAccess.getRecordRule());
            	            	        }
            	                   		add(
            	                   			current, 
            	                   			"annotation",
            	                    		lv_annotation_3_0, 
            	                    		"Annotation");
            	            	        afterParserOrEnumRuleCall();
            	            	    

            	            }


            	            }
            	            break;

            	    }

            	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:500:3: ( (lv_fields_4_0= ruleField ) )
            	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:501:1: (lv_fields_4_0= ruleField )
            	    {
            	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:501:1: (lv_fields_4_0= ruleField )
            	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:502:3: lv_fields_4_0= ruleField
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getRecordAccess().getFieldsFieldParserRuleCall_3_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleField_in_ruleRecord1104);
            	    lv_fields_4_0=ruleField();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getRecordRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"fields",
            	            		lv_fields_4_0, 
            	            		"Field");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop8;
                }
            } while (true);

            otherlv_5=(Token)match(input,15,FOLLOW_15_in_ruleRecord1118); 

                	newLeafNode(otherlv_5, grammarAccess.getRecordAccess().getRightCurlyBracketKeyword_4());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRecord"


    // $ANTLR start "entryRuleField"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:530:1: entryRuleField returns [EObject current=null] : iv_ruleField= ruleField EOF ;
    public final EObject entryRuleField() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleField = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:531:2: (iv_ruleField= ruleField EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:532:2: iv_ruleField= ruleField EOF
            {
             newCompositeNode(grammarAccess.getFieldRule()); 
            pushFollow(FOLLOW_ruleField_in_entryRuleField1154);
            iv_ruleField=ruleField();

            state._fsp--;

             current =iv_ruleField; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleField1164); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleField"


    // $ANTLR start "ruleField"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:539:1: ruleField returns [EObject current=null] : ( ( ( (lv_type_0_0= ruleFieldType ) ) ( (lv_annotation_1_0= ruleAnnotation ) )? ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= '=' ( (lv_value_4_0= ruleConstValue ) ) )? ruleEndLine ) | ( ( (lv_type_6_0= ruleDefType ) ) ( (lv_annotation_7_0= ruleAnnotation ) )? ( (lv_name_8_0= RULE_ID ) ) ruleEndLine ) | this_UnionType_10= ruleUnionType ) ;
    public final EObject ruleField() throws RecognitionException {
        EObject current = null;

        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token lv_name_8_0=null;
        EObject lv_type_0_0 = null;

        EObject lv_annotation_1_0 = null;

        EObject lv_value_4_0 = null;

        EObject lv_type_6_0 = null;

        EObject lv_annotation_7_0 = null;

        EObject this_UnionType_10 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:542:28: ( ( ( ( (lv_type_0_0= ruleFieldType ) ) ( (lv_annotation_1_0= ruleAnnotation ) )? ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= '=' ( (lv_value_4_0= ruleConstValue ) ) )? ruleEndLine ) | ( ( (lv_type_6_0= ruleDefType ) ) ( (lv_annotation_7_0= ruleAnnotation ) )? ( (lv_name_8_0= RULE_ID ) ) ruleEndLine ) | this_UnionType_10= ruleUnionType ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:543:1: ( ( ( (lv_type_0_0= ruleFieldType ) ) ( (lv_annotation_1_0= ruleAnnotation ) )? ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= '=' ( (lv_value_4_0= ruleConstValue ) ) )? ruleEndLine ) | ( ( (lv_type_6_0= ruleDefType ) ) ( (lv_annotation_7_0= ruleAnnotation ) )? ( (lv_name_8_0= RULE_ID ) ) ruleEndLine ) | this_UnionType_10= ruleUnionType )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:543:1: ( ( ( (lv_type_0_0= ruleFieldType ) ) ( (lv_annotation_1_0= ruleAnnotation ) )? ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= '=' ( (lv_value_4_0= ruleConstValue ) ) )? ruleEndLine ) | ( ( (lv_type_6_0= ruleDefType ) ) ( (lv_annotation_7_0= ruleAnnotation ) )? ( (lv_name_8_0= RULE_ID ) ) ruleEndLine ) | this_UnionType_10= ruleUnionType )
            int alt12=3;
            switch ( input.LA(1) ) {
            case 36:
            case 39:
            case 44:
            case 45:
            case 46:
            case 47:
            case 48:
            case 49:
            case 50:
            case 51:
            case 52:
                {
                alt12=1;
                }
                break;
            case RULE_ID:
                {
                alt12=2;
                }
                break;
            case 40:
                {
                alt12=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 12, 0, input);

                throw nvae;
            }

            switch (alt12) {
                case 1 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:543:2: ( ( (lv_type_0_0= ruleFieldType ) ) ( (lv_annotation_1_0= ruleAnnotation ) )? ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= '=' ( (lv_value_4_0= ruleConstValue ) ) )? ruleEndLine )
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:543:2: ( ( (lv_type_0_0= ruleFieldType ) ) ( (lv_annotation_1_0= ruleAnnotation ) )? ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= '=' ( (lv_value_4_0= ruleConstValue ) ) )? ruleEndLine )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:543:3: ( (lv_type_0_0= ruleFieldType ) ) ( (lv_annotation_1_0= ruleAnnotation ) )? ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= '=' ( (lv_value_4_0= ruleConstValue ) ) )? ruleEndLine
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:543:3: ( (lv_type_0_0= ruleFieldType ) )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:544:1: (lv_type_0_0= ruleFieldType )
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:544:1: (lv_type_0_0= ruleFieldType )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:545:3: lv_type_0_0= ruleFieldType
                    {
                     
                    	        newCompositeNode(grammarAccess.getFieldAccess().getTypeFieldTypeParserRuleCall_0_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleFieldType_in_ruleField1211);
                    lv_type_0_0=ruleFieldType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getFieldRule());
                    	        }
                           		set(
                           			current, 
                           			"type",
                            		lv_type_0_0, 
                            		"FieldType");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:561:2: ( (lv_annotation_1_0= ruleAnnotation ) )?
                    int alt9=2;
                    int LA9_0 = input.LA(1);

                    if ( (LA9_0==27||(LA9_0>=31 && LA9_0<=33)) ) {
                        alt9=1;
                    }
                    switch (alt9) {
                        case 1 :
                            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:562:1: (lv_annotation_1_0= ruleAnnotation )
                            {
                            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:562:1: (lv_annotation_1_0= ruleAnnotation )
                            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:563:3: lv_annotation_1_0= ruleAnnotation
                            {
                             
                            	        newCompositeNode(grammarAccess.getFieldAccess().getAnnotationAnnotationParserRuleCall_0_1_0()); 
                            	    
                            pushFollow(FOLLOW_ruleAnnotation_in_ruleField1232);
                            lv_annotation_1_0=ruleAnnotation();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getFieldRule());
                            	        }
                                   		set(
                                   			current, 
                                   			"annotation",
                                    		lv_annotation_1_0, 
                                    		"Annotation");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }
                            break;

                    }

                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:579:3: ( (lv_name_2_0= RULE_ID ) )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:580:1: (lv_name_2_0= RULE_ID )
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:580:1: (lv_name_2_0= RULE_ID )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:581:3: lv_name_2_0= RULE_ID
                    {
                    lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleField1250); 

                    			newLeafNode(lv_name_2_0, grammarAccess.getFieldAccess().getNameIDTerminalRuleCall_0_2_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getFieldRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"name",
                            		lv_name_2_0, 
                            		"ID");
                    	    

                    }


                    }

                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:597:2: (otherlv_3= '=' ( (lv_value_4_0= ruleConstValue ) ) )?
                    int alt10=2;
                    int LA10_0 = input.LA(1);

                    if ( (LA10_0==22) ) {
                        alt10=1;
                    }
                    switch (alt10) {
                        case 1 :
                            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:597:4: otherlv_3= '=' ( (lv_value_4_0= ruleConstValue ) )
                            {
                            otherlv_3=(Token)match(input,22,FOLLOW_22_in_ruleField1268); 

                                	newLeafNode(otherlv_3, grammarAccess.getFieldAccess().getEqualsSignKeyword_0_3_0());
                                
                            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:601:1: ( (lv_value_4_0= ruleConstValue ) )
                            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:602:1: (lv_value_4_0= ruleConstValue )
                            {
                            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:602:1: (lv_value_4_0= ruleConstValue )
                            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:603:3: lv_value_4_0= ruleConstValue
                            {
                             
                            	        newCompositeNode(grammarAccess.getFieldAccess().getValueConstValueParserRuleCall_0_3_1_0()); 
                            	    
                            pushFollow(FOLLOW_ruleConstValue_in_ruleField1289);
                            lv_value_4_0=ruleConstValue();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getFieldRule());
                            	        }
                                   		set(
                                   			current, 
                                   			"value",
                                    		lv_value_4_0, 
                                    		"ConstValue");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }


                            }
                            break;

                    }

                     
                            newCompositeNode(grammarAccess.getFieldAccess().getEndLineParserRuleCall_0_4()); 
                        
                    pushFollow(FOLLOW_ruleEndLine_in_ruleField1307);
                    ruleEndLine();

                    state._fsp--;

                     
                            afterParserOrEnumRuleCall();
                        

                    }


                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:628:6: ( ( (lv_type_6_0= ruleDefType ) ) ( (lv_annotation_7_0= ruleAnnotation ) )? ( (lv_name_8_0= RULE_ID ) ) ruleEndLine )
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:628:6: ( ( (lv_type_6_0= ruleDefType ) ) ( (lv_annotation_7_0= ruleAnnotation ) )? ( (lv_name_8_0= RULE_ID ) ) ruleEndLine )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:628:7: ( (lv_type_6_0= ruleDefType ) ) ( (lv_annotation_7_0= ruleAnnotation ) )? ( (lv_name_8_0= RULE_ID ) ) ruleEndLine
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:628:7: ( (lv_type_6_0= ruleDefType ) )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:629:1: (lv_type_6_0= ruleDefType )
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:629:1: (lv_type_6_0= ruleDefType )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:630:3: lv_type_6_0= ruleDefType
                    {
                     
                    	        newCompositeNode(grammarAccess.getFieldAccess().getTypeDefTypeParserRuleCall_1_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleDefType_in_ruleField1335);
                    lv_type_6_0=ruleDefType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getFieldRule());
                    	        }
                           		set(
                           			current, 
                           			"type",
                            		lv_type_6_0, 
                            		"DefType");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:646:2: ( (lv_annotation_7_0= ruleAnnotation ) )?
                    int alt11=2;
                    int LA11_0 = input.LA(1);

                    if ( (LA11_0==27||(LA11_0>=31 && LA11_0<=33)) ) {
                        alt11=1;
                    }
                    switch (alt11) {
                        case 1 :
                            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:647:1: (lv_annotation_7_0= ruleAnnotation )
                            {
                            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:647:1: (lv_annotation_7_0= ruleAnnotation )
                            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:648:3: lv_annotation_7_0= ruleAnnotation
                            {
                             
                            	        newCompositeNode(grammarAccess.getFieldAccess().getAnnotationAnnotationParserRuleCall_1_1_0()); 
                            	    
                            pushFollow(FOLLOW_ruleAnnotation_in_ruleField1356);
                            lv_annotation_7_0=ruleAnnotation();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getFieldRule());
                            	        }
                                   		set(
                                   			current, 
                                   			"annotation",
                                    		lv_annotation_7_0, 
                                    		"Annotation");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }
                            break;

                    }

                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:664:3: ( (lv_name_8_0= RULE_ID ) )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:665:1: (lv_name_8_0= RULE_ID )
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:665:1: (lv_name_8_0= RULE_ID )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:666:3: lv_name_8_0= RULE_ID
                    {
                    lv_name_8_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleField1374); 

                    			newLeafNode(lv_name_8_0, grammarAccess.getFieldAccess().getNameIDTerminalRuleCall_1_2_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getFieldRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"name",
                            		lv_name_8_0, 
                            		"ID");
                    	    

                    }


                    }

                     
                            newCompositeNode(grammarAccess.getFieldAccess().getEndLineParserRuleCall_1_3()); 
                        
                    pushFollow(FOLLOW_ruleEndLine_in_ruleField1395);
                    ruleEndLine();

                    state._fsp--;

                     
                            afterParserOrEnumRuleCall();
                        

                    }


                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:692:5: this_UnionType_10= ruleUnionType
                    {
                     
                            newCompositeNode(grammarAccess.getFieldAccess().getUnionTypeParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleUnionType_in_ruleField1423);
                    this_UnionType_10=ruleUnionType();

                    state._fsp--;

                     
                            current = this_UnionType_10; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleField"


    // $ANTLR start "entryRuleEnum"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:708:1: entryRuleEnum returns [EObject current=null] : iv_ruleEnum= ruleEnum EOF ;
    public final EObject entryRuleEnum() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEnum = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:709:2: (iv_ruleEnum= ruleEnum EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:710:2: iv_ruleEnum= ruleEnum EOF
            {
             newCompositeNode(grammarAccess.getEnumRule()); 
            pushFollow(FOLLOW_ruleEnum_in_entryRuleEnum1458);
            iv_ruleEnum=ruleEnum();

            state._fsp--;

             current =iv_ruleEnum; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleEnum1468); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEnum"


    // $ANTLR start "ruleEnum"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:717:1: ruleEnum returns [EObject current=null] : (otherlv_0= 'enum' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_fields_3_0= ruleEnumFields ) ) ( ruleListSeparator ( (lv_fields_5_0= ruleEnumFields ) ) )* otherlv_6= '}' ) ;
    public final EObject ruleEnum() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_6=null;
        EObject lv_fields_3_0 = null;

        EObject lv_fields_5_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:720:28: ( (otherlv_0= 'enum' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_fields_3_0= ruleEnumFields ) ) ( ruleListSeparator ( (lv_fields_5_0= ruleEnumFields ) ) )* otherlv_6= '}' ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:721:1: (otherlv_0= 'enum' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_fields_3_0= ruleEnumFields ) ) ( ruleListSeparator ( (lv_fields_5_0= ruleEnumFields ) ) )* otherlv_6= '}' )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:721:1: (otherlv_0= 'enum' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_fields_3_0= ruleEnumFields ) ) ( ruleListSeparator ( (lv_fields_5_0= ruleEnumFields ) ) )* otherlv_6= '}' )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:721:3: otherlv_0= 'enum' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_fields_3_0= ruleEnumFields ) ) ( ruleListSeparator ( (lv_fields_5_0= ruleEnumFields ) ) )* otherlv_6= '}'
            {
            otherlv_0=(Token)match(input,18,FOLLOW_18_in_ruleEnum1505); 

                	newLeafNode(otherlv_0, grammarAccess.getEnumAccess().getEnumKeyword_0());
                
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:725:1: ( (lv_name_1_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:726:1: (lv_name_1_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:726:1: (lv_name_1_0= RULE_ID )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:727:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEnum1522); 

            			newLeafNode(lv_name_1_0, grammarAccess.getEnumAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getEnumRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,14,FOLLOW_14_in_ruleEnum1539); 

                	newLeafNode(otherlv_2, grammarAccess.getEnumAccess().getLeftCurlyBracketKeyword_2());
                
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:747:1: ( (lv_fields_3_0= ruleEnumFields ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:748:1: (lv_fields_3_0= ruleEnumFields )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:748:1: (lv_fields_3_0= ruleEnumFields )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:749:3: lv_fields_3_0= ruleEnumFields
            {
             
            	        newCompositeNode(grammarAccess.getEnumAccess().getFieldsEnumFieldsParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleEnumFields_in_ruleEnum1560);
            lv_fields_3_0=ruleEnumFields();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getEnumRule());
            	        }
                   		add(
                   			current, 
                   			"fields",
                    		lv_fields_3_0, 
                    		"EnumFields");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:765:2: ( ruleListSeparator ( (lv_fields_5_0= ruleEnumFields ) ) )*
            loop13:
            do {
                int alt13=2;
                int LA13_0 = input.LA(1);

                if ( (LA13_0==29) ) {
                    alt13=1;
                }


                switch (alt13) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:766:5: ruleListSeparator ( (lv_fields_5_0= ruleEnumFields ) )
            	    {
            	     
            	            newCompositeNode(grammarAccess.getEnumAccess().getListSeparatorParserRuleCall_4_0()); 
            	        
            	    pushFollow(FOLLOW_ruleListSeparator_in_ruleEnum1577);
            	    ruleListSeparator();

            	    state._fsp--;

            	     
            	            afterParserOrEnumRuleCall();
            	        
            	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:773:1: ( (lv_fields_5_0= ruleEnumFields ) )
            	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:774:1: (lv_fields_5_0= ruleEnumFields )
            	    {
            	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:774:1: (lv_fields_5_0= ruleEnumFields )
            	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:775:3: lv_fields_5_0= ruleEnumFields
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getEnumAccess().getFieldsEnumFieldsParserRuleCall_4_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleEnumFields_in_ruleEnum1597);
            	    lv_fields_5_0=ruleEnumFields();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getEnumRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"fields",
            	            		lv_fields_5_0, 
            	            		"EnumFields");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop13;
                }
            } while (true);

            otherlv_6=(Token)match(input,15,FOLLOW_15_in_ruleEnum1611); 

                	newLeafNode(otherlv_6, grammarAccess.getEnumAccess().getRightCurlyBracketKeyword_5());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEnum"


    // $ANTLR start "entryRuleEnumFields"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:803:1: entryRuleEnumFields returns [EObject current=null] : iv_ruleEnumFields= ruleEnumFields EOF ;
    public final EObject entryRuleEnumFields() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEnumFields = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:804:2: (iv_ruleEnumFields= ruleEnumFields EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:805:2: iv_ruleEnumFields= ruleEnumFields EOF
            {
             newCompositeNode(grammarAccess.getEnumFieldsRule()); 
            pushFollow(FOLLOW_ruleEnumFields_in_entryRuleEnumFields1647);
            iv_ruleEnumFields=ruleEnumFields();

            state._fsp--;

             current =iv_ruleEnumFields; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleEnumFields1657); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEnumFields"


    // $ANTLR start "ruleEnumFields"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:812:1: ruleEnumFields returns [EObject current=null] : ( (lv_name_0_0= RULE_ID ) ) ;
    public final EObject ruleEnumFields() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:815:28: ( ( (lv_name_0_0= RULE_ID ) ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:816:1: ( (lv_name_0_0= RULE_ID ) )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:816:1: ( (lv_name_0_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:817:1: (lv_name_0_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:817:1: (lv_name_0_0= RULE_ID )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:818:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEnumFields1698); 

            			newLeafNode(lv_name_0_0, grammarAccess.getEnumFieldsAccess().getNameIDTerminalRuleCall_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getEnumFieldsRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_0_0, 
                    		"ID");
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEnumFields"


    // $ANTLR start "entryRuleFixedLengthField"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:842:1: entryRuleFixedLengthField returns [EObject current=null] : iv_ruleFixedLengthField= ruleFixedLengthField EOF ;
    public final EObject entryRuleFixedLengthField() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFixedLengthField = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:843:2: (iv_ruleFixedLengthField= ruleFixedLengthField EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:844:2: iv_ruleFixedLengthField= ruleFixedLengthField EOF
            {
             newCompositeNode(grammarAccess.getFixedLengthFieldRule()); 
            pushFollow(FOLLOW_ruleFixedLengthField_in_entryRuleFixedLengthField1738);
            iv_ruleFixedLengthField=ruleFixedLengthField();

            state._fsp--;

             current =iv_ruleFixedLengthField; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleFixedLengthField1748); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFixedLengthField"


    // $ANTLR start "ruleFixedLengthField"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:851:1: ruleFixedLengthField returns [EObject current=null] : (otherlv_0= 'fixed' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '(' ( (lv_size_3_0= RULE_INT ) ) otherlv_4= ')' ruleEndLine ) ;
    public final EObject ruleFixedLengthField() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token lv_size_3_0=null;
        Token otherlv_4=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:854:28: ( (otherlv_0= 'fixed' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '(' ( (lv_size_3_0= RULE_INT ) ) otherlv_4= ')' ruleEndLine ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:855:1: (otherlv_0= 'fixed' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '(' ( (lv_size_3_0= RULE_INT ) ) otherlv_4= ')' ruleEndLine )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:855:1: (otherlv_0= 'fixed' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '(' ( (lv_size_3_0= RULE_INT ) ) otherlv_4= ')' ruleEndLine )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:855:3: otherlv_0= 'fixed' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '(' ( (lv_size_3_0= RULE_INT ) ) otherlv_4= ')' ruleEndLine
            {
            otherlv_0=(Token)match(input,19,FOLLOW_19_in_ruleFixedLengthField1785); 

                	newLeafNode(otherlv_0, grammarAccess.getFixedLengthFieldAccess().getFixedKeyword_0());
                
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:859:1: ( (lv_name_1_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:860:1: (lv_name_1_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:860:1: (lv_name_1_0= RULE_ID )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:861:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleFixedLengthField1802); 

            			newLeafNode(lv_name_1_0, grammarAccess.getFixedLengthFieldAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getFixedLengthFieldRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,23,FOLLOW_23_in_ruleFixedLengthField1819); 

                	newLeafNode(otherlv_2, grammarAccess.getFixedLengthFieldAccess().getLeftParenthesisKeyword_2());
                
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:881:1: ( (lv_size_3_0= RULE_INT ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:882:1: (lv_size_3_0= RULE_INT )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:882:1: (lv_size_3_0= RULE_INT )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:883:3: lv_size_3_0= RULE_INT
            {
            lv_size_3_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleFixedLengthField1836); 

            			newLeafNode(lv_size_3_0, grammarAccess.getFixedLengthFieldAccess().getSizeINTTerminalRuleCall_3_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getFixedLengthFieldRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"size",
                    		lv_size_3_0, 
                    		"INT");
            	    

            }


            }

            otherlv_4=(Token)match(input,24,FOLLOW_24_in_ruleFixedLengthField1853); 

                	newLeafNode(otherlv_4, grammarAccess.getFixedLengthFieldAccess().getRightParenthesisKeyword_4());
                
             
                    newCompositeNode(grammarAccess.getFixedLengthFieldAccess().getEndLineParserRuleCall_5()); 
                
            pushFollow(FOLLOW_ruleEndLine_in_ruleFixedLengthField1869);
            ruleEndLine();

            state._fsp--;

             
                    afterParserOrEnumRuleCall();
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFixedLengthField"


    // $ANTLR start "entryRuleImports"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:919:1: entryRuleImports returns [EObject current=null] : iv_ruleImports= ruleImports EOF ;
    public final EObject entryRuleImports() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleImports = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:920:2: (iv_ruleImports= ruleImports EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:921:2: iv_ruleImports= ruleImports EOF
            {
             newCompositeNode(grammarAccess.getImportsRule()); 
            pushFollow(FOLLOW_ruleImports_in_entryRuleImports1904);
            iv_ruleImports=ruleImports();

            state._fsp--;

             current =iv_ruleImports; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleImports1914); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleImports"


    // $ANTLR start "ruleImports"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:928:1: ruleImports returns [EObject current=null] : (otherlv_0= 'import' ( (lv_importType_1_0= ruleImportTypeRef ) ) ( (lv_importURI_2_0= ruleStringRef ) ) ( (lv_endLine_3_0= ruleEndLine ) ) ) ;
    public final EObject ruleImports() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject lv_importType_1_0 = null;

        EObject lv_importURI_2_0 = null;

        AntlrDatatypeRuleToken lv_endLine_3_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:931:28: ( (otherlv_0= 'import' ( (lv_importType_1_0= ruleImportTypeRef ) ) ( (lv_importURI_2_0= ruleStringRef ) ) ( (lv_endLine_3_0= ruleEndLine ) ) ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:932:1: (otherlv_0= 'import' ( (lv_importType_1_0= ruleImportTypeRef ) ) ( (lv_importURI_2_0= ruleStringRef ) ) ( (lv_endLine_3_0= ruleEndLine ) ) )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:932:1: (otherlv_0= 'import' ( (lv_importType_1_0= ruleImportTypeRef ) ) ( (lv_importURI_2_0= ruleStringRef ) ) ( (lv_endLine_3_0= ruleEndLine ) ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:932:3: otherlv_0= 'import' ( (lv_importType_1_0= ruleImportTypeRef ) ) ( (lv_importURI_2_0= ruleStringRef ) ) ( (lv_endLine_3_0= ruleEndLine ) )
            {
            otherlv_0=(Token)match(input,20,FOLLOW_20_in_ruleImports1951); 

                	newLeafNode(otherlv_0, grammarAccess.getImportsAccess().getImportKeyword_0());
                
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:936:1: ( (lv_importType_1_0= ruleImportTypeRef ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:937:1: (lv_importType_1_0= ruleImportTypeRef )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:937:1: (lv_importType_1_0= ruleImportTypeRef )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:938:3: lv_importType_1_0= ruleImportTypeRef
            {
             
            	        newCompositeNode(grammarAccess.getImportsAccess().getImportTypeImportTypeRefParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleImportTypeRef_in_ruleImports1972);
            lv_importType_1_0=ruleImportTypeRef();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getImportsRule());
            	        }
                   		set(
                   			current, 
                   			"importType",
                    		lv_importType_1_0, 
                    		"ImportTypeRef");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:954:2: ( (lv_importURI_2_0= ruleStringRef ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:955:1: (lv_importURI_2_0= ruleStringRef )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:955:1: (lv_importURI_2_0= ruleStringRef )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:956:3: lv_importURI_2_0= ruleStringRef
            {
             
            	        newCompositeNode(grammarAccess.getImportsAccess().getImportURIStringRefParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleStringRef_in_ruleImports1993);
            lv_importURI_2_0=ruleStringRef();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getImportsRule());
            	        }
                   		set(
                   			current, 
                   			"importURI",
                    		lv_importURI_2_0, 
                    		"StringRef");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:972:2: ( (lv_endLine_3_0= ruleEndLine ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:973:1: (lv_endLine_3_0= ruleEndLine )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:973:1: (lv_endLine_3_0= ruleEndLine )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:974:3: lv_endLine_3_0= ruleEndLine
            {
             
            	        newCompositeNode(grammarAccess.getImportsAccess().getEndLineEndLineParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleEndLine_in_ruleImports2014);
            lv_endLine_3_0=ruleEndLine();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getImportsRule());
            	        }
                   		set(
                   			current, 
                   			"endLine",
                    		lv_endLine_3_0, 
                    		"EndLine");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleImports"


    // $ANTLR start "entryRuleRPCMessage"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:998:1: entryRuleRPCMessage returns [EObject current=null] : iv_ruleRPCMessage= ruleRPCMessage EOF ;
    public final EObject entryRuleRPCMessage() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRPCMessage = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:999:2: (iv_ruleRPCMessage= ruleRPCMessage EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1000:2: iv_ruleRPCMessage= ruleRPCMessage EOF
            {
             newCompositeNode(grammarAccess.getRPCMessageRule()); 
            pushFollow(FOLLOW_ruleRPCMessage_in_entryRuleRPCMessage2050);
            iv_ruleRPCMessage=ruleRPCMessage();

            state._fsp--;

             current =iv_ruleRPCMessage; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRPCMessage2060); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRPCMessage"


    // $ANTLR start "ruleRPCMessage"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1007:1: ruleRPCMessage returns [EObject current=null] : ( ( (lv_returnType_0_0= ruleReturnType ) ) ( (lv_name_1_0= ruleName ) ) otherlv_2= '(' ( ( (lv_args_3_0= ruleArgument ) ) ( ruleListSeparator ( (lv_args_5_0= ruleArgument ) ) )* )? otherlv_6= ')' (otherlv_7= 'oneway' )? ( (lv_throws_8_0= ruleThrows ) )? ruleEndLine ) ;
    public final EObject ruleRPCMessage() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        EObject lv_returnType_0_0 = null;

        EObject lv_name_1_0 = null;

        EObject lv_args_3_0 = null;

        EObject lv_args_5_0 = null;

        EObject lv_throws_8_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1010:28: ( ( ( (lv_returnType_0_0= ruleReturnType ) ) ( (lv_name_1_0= ruleName ) ) otherlv_2= '(' ( ( (lv_args_3_0= ruleArgument ) ) ( ruleListSeparator ( (lv_args_5_0= ruleArgument ) ) )* )? otherlv_6= ')' (otherlv_7= 'oneway' )? ( (lv_throws_8_0= ruleThrows ) )? ruleEndLine ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1011:1: ( ( (lv_returnType_0_0= ruleReturnType ) ) ( (lv_name_1_0= ruleName ) ) otherlv_2= '(' ( ( (lv_args_3_0= ruleArgument ) ) ( ruleListSeparator ( (lv_args_5_0= ruleArgument ) ) )* )? otherlv_6= ')' (otherlv_7= 'oneway' )? ( (lv_throws_8_0= ruleThrows ) )? ruleEndLine )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1011:1: ( ( (lv_returnType_0_0= ruleReturnType ) ) ( (lv_name_1_0= ruleName ) ) otherlv_2= '(' ( ( (lv_args_3_0= ruleArgument ) ) ( ruleListSeparator ( (lv_args_5_0= ruleArgument ) ) )* )? otherlv_6= ')' (otherlv_7= 'oneway' )? ( (lv_throws_8_0= ruleThrows ) )? ruleEndLine )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1011:2: ( (lv_returnType_0_0= ruleReturnType ) ) ( (lv_name_1_0= ruleName ) ) otherlv_2= '(' ( ( (lv_args_3_0= ruleArgument ) ) ( ruleListSeparator ( (lv_args_5_0= ruleArgument ) ) )* )? otherlv_6= ')' (otherlv_7= 'oneway' )? ( (lv_throws_8_0= ruleThrows ) )? ruleEndLine
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1011:2: ( (lv_returnType_0_0= ruleReturnType ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1012:1: (lv_returnType_0_0= ruleReturnType )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1012:1: (lv_returnType_0_0= ruleReturnType )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1013:3: lv_returnType_0_0= ruleReturnType
            {
             
            	        newCompositeNode(grammarAccess.getRPCMessageAccess().getReturnTypeReturnTypeParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleReturnType_in_ruleRPCMessage2106);
            lv_returnType_0_0=ruleReturnType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getRPCMessageRule());
            	        }
                   		set(
                   			current, 
                   			"returnType",
                    		lv_returnType_0_0, 
                    		"ReturnType");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1029:2: ( (lv_name_1_0= ruleName ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1030:1: (lv_name_1_0= ruleName )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1030:1: (lv_name_1_0= ruleName )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1031:3: lv_name_1_0= ruleName
            {
             
            	        newCompositeNode(grammarAccess.getRPCMessageAccess().getNameNameParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleName_in_ruleRPCMessage2127);
            lv_name_1_0=ruleName();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getRPCMessageRule());
            	        }
                   		set(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"Name");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,23,FOLLOW_23_in_ruleRPCMessage2139); 

                	newLeafNode(otherlv_2, grammarAccess.getRPCMessageAccess().getLeftParenthesisKeyword_2());
                
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1051:1: ( ( (lv_args_3_0= ruleArgument ) ) ( ruleListSeparator ( (lv_args_5_0= ruleArgument ) ) )* )?
            int alt15=2;
            int LA15_0 = input.LA(1);

            if ( (LA15_0==RULE_ID||(LA15_0>=44 && LA15_0<=52)) ) {
                alt15=1;
            }
            switch (alt15) {
                case 1 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1051:2: ( (lv_args_3_0= ruleArgument ) ) ( ruleListSeparator ( (lv_args_5_0= ruleArgument ) ) )*
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1051:2: ( (lv_args_3_0= ruleArgument ) )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1052:1: (lv_args_3_0= ruleArgument )
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1052:1: (lv_args_3_0= ruleArgument )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1053:3: lv_args_3_0= ruleArgument
                    {
                     
                    	        newCompositeNode(grammarAccess.getRPCMessageAccess().getArgsArgumentParserRuleCall_3_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleArgument_in_ruleRPCMessage2161);
                    lv_args_3_0=ruleArgument();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getRPCMessageRule());
                    	        }
                           		add(
                           			current, 
                           			"args",
                            		lv_args_3_0, 
                            		"Argument");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1069:2: ( ruleListSeparator ( (lv_args_5_0= ruleArgument ) ) )*
                    loop14:
                    do {
                        int alt14=2;
                        int LA14_0 = input.LA(1);

                        if ( (LA14_0==29) ) {
                            alt14=1;
                        }


                        switch (alt14) {
                    	case 1 :
                    	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1070:5: ruleListSeparator ( (lv_args_5_0= ruleArgument ) )
                    	    {
                    	     
                    	            newCompositeNode(grammarAccess.getRPCMessageAccess().getListSeparatorParserRuleCall_3_1_0()); 
                    	        
                    	    pushFollow(FOLLOW_ruleListSeparator_in_ruleRPCMessage2178);
                    	    ruleListSeparator();

                    	    state._fsp--;

                    	     
                    	            afterParserOrEnumRuleCall();
                    	        
                    	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1077:1: ( (lv_args_5_0= ruleArgument ) )
                    	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1078:1: (lv_args_5_0= ruleArgument )
                    	    {
                    	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1078:1: (lv_args_5_0= ruleArgument )
                    	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1079:3: lv_args_5_0= ruleArgument
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getRPCMessageAccess().getArgsArgumentParserRuleCall_3_1_1_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleArgument_in_ruleRPCMessage2198);
                    	    lv_args_5_0=ruleArgument();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getRPCMessageRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"args",
                    	            		lv_args_5_0, 
                    	            		"Argument");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop14;
                        }
                    } while (true);


                    }
                    break;

            }

            otherlv_6=(Token)match(input,24,FOLLOW_24_in_ruleRPCMessage2214); 

                	newLeafNode(otherlv_6, grammarAccess.getRPCMessageAccess().getRightParenthesisKeyword_4());
                
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1099:1: (otherlv_7= 'oneway' )?
            int alt16=2;
            int LA16_0 = input.LA(1);

            if ( (LA16_0==25) ) {
                alt16=1;
            }
            switch (alt16) {
                case 1 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1099:3: otherlv_7= 'oneway'
                    {
                    otherlv_7=(Token)match(input,25,FOLLOW_25_in_ruleRPCMessage2227); 

                        	newLeafNode(otherlv_7, grammarAccess.getRPCMessageAccess().getOnewayKeyword_5());
                        

                    }
                    break;

            }

            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1103:3: ( (lv_throws_8_0= ruleThrows ) )?
            int alt17=2;
            int LA17_0 = input.LA(1);

            if ( (LA17_0==21) ) {
                alt17=1;
            }
            switch (alt17) {
                case 1 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1104:1: (lv_throws_8_0= ruleThrows )
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1104:1: (lv_throws_8_0= ruleThrows )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1105:3: lv_throws_8_0= ruleThrows
                    {
                     
                    	        newCompositeNode(grammarAccess.getRPCMessageAccess().getThrowsThrowsParserRuleCall_6_0()); 
                    	    
                    pushFollow(FOLLOW_ruleThrows_in_ruleRPCMessage2250);
                    lv_throws_8_0=ruleThrows();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getRPCMessageRule());
                    	        }
                           		set(
                           			current, 
                           			"throws",
                            		lv_throws_8_0, 
                            		"Throws");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }

             
                    newCompositeNode(grammarAccess.getRPCMessageAccess().getEndLineParserRuleCall_7()); 
                
            pushFollow(FOLLOW_ruleEndLine_in_ruleRPCMessage2267);
            ruleEndLine();

            state._fsp--;

             
                    afterParserOrEnumRuleCall();
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRPCMessage"


    // $ANTLR start "entryRuleName"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1137:1: entryRuleName returns [EObject current=null] : iv_ruleName= ruleName EOF ;
    public final EObject entryRuleName() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleName = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1138:2: (iv_ruleName= ruleName EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1139:2: iv_ruleName= ruleName EOF
            {
             newCompositeNode(grammarAccess.getNameRule()); 
            pushFollow(FOLLOW_ruleName_in_entryRuleName2302);
            iv_ruleName=ruleName();

            state._fsp--;

             current =iv_ruleName; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleName2312); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleName"


    // $ANTLR start "ruleName"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1146:1: ruleName returns [EObject current=null] : ( ( (lv_value_0_0= RULE_ID ) ) | ( ( (lv_value_1_0= '`' ) ) ruleReservedIdentifiers otherlv_3= '`' ) ) ;
    public final EObject ruleName() throws RecognitionException {
        EObject current = null;

        Token lv_value_0_0=null;
        Token lv_value_1_0=null;
        Token otherlv_3=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1149:28: ( ( ( (lv_value_0_0= RULE_ID ) ) | ( ( (lv_value_1_0= '`' ) ) ruleReservedIdentifiers otherlv_3= '`' ) ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1150:1: ( ( (lv_value_0_0= RULE_ID ) ) | ( ( (lv_value_1_0= '`' ) ) ruleReservedIdentifiers otherlv_3= '`' ) )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1150:1: ( ( (lv_value_0_0= RULE_ID ) ) | ( ( (lv_value_1_0= '`' ) ) ruleReservedIdentifiers otherlv_3= '`' ) )
            int alt18=2;
            int LA18_0 = input.LA(1);

            if ( (LA18_0==RULE_ID) ) {
                alt18=1;
            }
            else if ( (LA18_0==26) ) {
                alt18=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 18, 0, input);

                throw nvae;
            }
            switch (alt18) {
                case 1 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1150:2: ( (lv_value_0_0= RULE_ID ) )
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1150:2: ( (lv_value_0_0= RULE_ID ) )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1151:1: (lv_value_0_0= RULE_ID )
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1151:1: (lv_value_0_0= RULE_ID )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1152:3: lv_value_0_0= RULE_ID
                    {
                    lv_value_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleName2354); 

                    			newLeafNode(lv_value_0_0, grammarAccess.getNameAccess().getValueIDTerminalRuleCall_0_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getNameRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"value",
                            		lv_value_0_0, 
                            		"ID");
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1169:6: ( ( (lv_value_1_0= '`' ) ) ruleReservedIdentifiers otherlv_3= '`' )
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1169:6: ( ( (lv_value_1_0= '`' ) ) ruleReservedIdentifiers otherlv_3= '`' )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1169:7: ( (lv_value_1_0= '`' ) ) ruleReservedIdentifiers otherlv_3= '`'
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1169:7: ( (lv_value_1_0= '`' ) )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1170:1: (lv_value_1_0= '`' )
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1170:1: (lv_value_1_0= '`' )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1171:3: lv_value_1_0= '`'
                    {
                    lv_value_1_0=(Token)match(input,26,FOLLOW_26_in_ruleName2384); 

                            newLeafNode(lv_value_1_0, grammarAccess.getNameAccess().getValueGraveAccentKeyword_1_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getNameRule());
                    	        }
                           		setWithLastConsumed(current, "value", lv_value_1_0, "`");
                    	    

                    }


                    }

                     
                            newCompositeNode(grammarAccess.getNameAccess().getReservedIdentifiersParserRuleCall_1_1()); 
                        
                    pushFollow(FOLLOW_ruleReservedIdentifiers_in_ruleName2413);
                    ruleReservedIdentifiers();

                    state._fsp--;

                     
                            afterParserOrEnumRuleCall();
                        
                    otherlv_3=(Token)match(input,26,FOLLOW_26_in_ruleName2424); 

                        	newLeafNode(otherlv_3, grammarAccess.getNameAccess().getGraveAccentKeyword_1_2());
                        

                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleName"


    // $ANTLR start "entryRuleReturnType"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1204:1: entryRuleReturnType returns [EObject current=null] : iv_ruleReturnType= ruleReturnType EOF ;
    public final EObject entryRuleReturnType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleReturnType = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1205:2: (iv_ruleReturnType= ruleReturnType EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1206:2: iv_ruleReturnType= ruleReturnType EOF
            {
             newCompositeNode(grammarAccess.getReturnTypeRule()); 
            pushFollow(FOLLOW_ruleReturnType_in_entryRuleReturnType2461);
            iv_ruleReturnType=ruleReturnType();

            state._fsp--;

             current =iv_ruleReturnType; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleReturnType2471); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleReturnType"


    // $ANTLR start "ruleReturnType"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1213:1: ruleReturnType returns [EObject current=null] : (this_BaseTypeRef_0= ruleBaseTypeRef | ( (otherlv_1= RULE_ID ) ) ) ;
    public final EObject ruleReturnType() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject this_BaseTypeRef_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1216:28: ( (this_BaseTypeRef_0= ruleBaseTypeRef | ( (otherlv_1= RULE_ID ) ) ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1217:1: (this_BaseTypeRef_0= ruleBaseTypeRef | ( (otherlv_1= RULE_ID ) ) )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1217:1: (this_BaseTypeRef_0= ruleBaseTypeRef | ( (otherlv_1= RULE_ID ) ) )
            int alt19=2;
            int LA19_0 = input.LA(1);

            if ( ((LA19_0>=44 && LA19_0<=52)) ) {
                alt19=1;
            }
            else if ( (LA19_0==RULE_ID) ) {
                alt19=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 19, 0, input);

                throw nvae;
            }
            switch (alt19) {
                case 1 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1218:5: this_BaseTypeRef_0= ruleBaseTypeRef
                    {
                     
                            newCompositeNode(grammarAccess.getReturnTypeAccess().getBaseTypeRefParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleBaseTypeRef_in_ruleReturnType2518);
                    this_BaseTypeRef_0=ruleBaseTypeRef();

                    state._fsp--;

                     
                            current = this_BaseTypeRef_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1227:6: ( (otherlv_1= RULE_ID ) )
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1227:6: ( (otherlv_1= RULE_ID ) )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1228:1: (otherlv_1= RULE_ID )
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1228:1: (otherlv_1= RULE_ID )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1229:3: otherlv_1= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getReturnTypeRule());
                    	        }
                            
                    otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleReturnType2543); 

                    		newLeafNode(otherlv_1, grammarAccess.getReturnTypeAccess().getTypeDefinitionsCrossReference_1_0()); 
                    	

                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleReturnType"


    // $ANTLR start "entryRuleThrows"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1248:1: entryRuleThrows returns [EObject current=null] : iv_ruleThrows= ruleThrows EOF ;
    public final EObject entryRuleThrows() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleThrows = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1249:2: (iv_ruleThrows= ruleThrows EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1250:2: iv_ruleThrows= ruleThrows EOF
            {
             newCompositeNode(grammarAccess.getThrowsRule()); 
            pushFollow(FOLLOW_ruleThrows_in_entryRuleThrows2579);
            iv_ruleThrows=ruleThrows();

            state._fsp--;

             current =iv_ruleThrows; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleThrows2589); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleThrows"


    // $ANTLR start "ruleThrows"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1257:1: ruleThrows returns [EObject current=null] : (otherlv_0= 'throws' ( (otherlv_1= RULE_ID ) ) ) ;
    public final EObject ruleThrows() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1260:28: ( (otherlv_0= 'throws' ( (otherlv_1= RULE_ID ) ) ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1261:1: (otherlv_0= 'throws' ( (otherlv_1= RULE_ID ) ) )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1261:1: (otherlv_0= 'throws' ( (otherlv_1= RULE_ID ) ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1261:3: otherlv_0= 'throws' ( (otherlv_1= RULE_ID ) )
            {
            otherlv_0=(Token)match(input,21,FOLLOW_21_in_ruleThrows2626); 

                	newLeafNode(otherlv_0, grammarAccess.getThrowsAccess().getThrowsKeyword_0());
                
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1265:1: ( (otherlv_1= RULE_ID ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1266:1: (otherlv_1= RULE_ID )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1266:1: (otherlv_1= RULE_ID )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1267:3: otherlv_1= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getThrowsRule());
            	        }
                    
            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleThrows2646); 

            		newLeafNode(otherlv_1, grammarAccess.getThrowsAccess().getErrorErrorCrossReference_1_0()); 
            	

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleThrows"


    // $ANTLR start "entryRuleArgument"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1286:1: entryRuleArgument returns [EObject current=null] : iv_ruleArgument= ruleArgument EOF ;
    public final EObject entryRuleArgument() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleArgument = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1287:2: (iv_ruleArgument= ruleArgument EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1288:2: iv_ruleArgument= ruleArgument EOF
            {
             newCompositeNode(grammarAccess.getArgumentRule()); 
            pushFollow(FOLLOW_ruleArgument_in_entryRuleArgument2682);
            iv_ruleArgument=ruleArgument();

            state._fsp--;

             current =iv_ruleArgument; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleArgument2692); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleArgument"


    // $ANTLR start "ruleArgument"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1295:1: ruleArgument returns [EObject current=null] : ( ( (lv_type_0_0= ruleReturnType ) ) ( (lv_name_1_0= ruleName ) ) (otherlv_2= '=' ( (lv_value_3_0= ruleConstValue ) ) )? ) ;
    public final EObject ruleArgument() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        EObject lv_type_0_0 = null;

        EObject lv_name_1_0 = null;

        EObject lv_value_3_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1298:28: ( ( ( (lv_type_0_0= ruleReturnType ) ) ( (lv_name_1_0= ruleName ) ) (otherlv_2= '=' ( (lv_value_3_0= ruleConstValue ) ) )? ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1299:1: ( ( (lv_type_0_0= ruleReturnType ) ) ( (lv_name_1_0= ruleName ) ) (otherlv_2= '=' ( (lv_value_3_0= ruleConstValue ) ) )? )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1299:1: ( ( (lv_type_0_0= ruleReturnType ) ) ( (lv_name_1_0= ruleName ) ) (otherlv_2= '=' ( (lv_value_3_0= ruleConstValue ) ) )? )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1299:2: ( (lv_type_0_0= ruleReturnType ) ) ( (lv_name_1_0= ruleName ) ) (otherlv_2= '=' ( (lv_value_3_0= ruleConstValue ) ) )?
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1299:2: ( (lv_type_0_0= ruleReturnType ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1300:1: (lv_type_0_0= ruleReturnType )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1300:1: (lv_type_0_0= ruleReturnType )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1301:3: lv_type_0_0= ruleReturnType
            {
             
            	        newCompositeNode(grammarAccess.getArgumentAccess().getTypeReturnTypeParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleReturnType_in_ruleArgument2738);
            lv_type_0_0=ruleReturnType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getArgumentRule());
            	        }
                   		set(
                   			current, 
                   			"type",
                    		lv_type_0_0, 
                    		"ReturnType");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1317:2: ( (lv_name_1_0= ruleName ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1318:1: (lv_name_1_0= ruleName )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1318:1: (lv_name_1_0= ruleName )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1319:3: lv_name_1_0= ruleName
            {
             
            	        newCompositeNode(grammarAccess.getArgumentAccess().getNameNameParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleName_in_ruleArgument2759);
            lv_name_1_0=ruleName();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getArgumentRule());
            	        }
                   		set(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"Name");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1335:2: (otherlv_2= '=' ( (lv_value_3_0= ruleConstValue ) ) )?
            int alt20=2;
            int LA20_0 = input.LA(1);

            if ( (LA20_0==22) ) {
                alt20=1;
            }
            switch (alt20) {
                case 1 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1335:4: otherlv_2= '=' ( (lv_value_3_0= ruleConstValue ) )
                    {
                    otherlv_2=(Token)match(input,22,FOLLOW_22_in_ruleArgument2772); 

                        	newLeafNode(otherlv_2, grammarAccess.getArgumentAccess().getEqualsSignKeyword_2_0());
                        
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1339:1: ( (lv_value_3_0= ruleConstValue ) )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1340:1: (lv_value_3_0= ruleConstValue )
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1340:1: (lv_value_3_0= ruleConstValue )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1341:3: lv_value_3_0= ruleConstValue
                    {
                     
                    	        newCompositeNode(grammarAccess.getArgumentAccess().getValueConstValueParserRuleCall_2_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleConstValue_in_ruleArgument2793);
                    lv_value_3_0=ruleConstValue();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getArgumentRule());
                    	        }
                           		set(
                           			current, 
                           			"value",
                            		lv_value_3_0, 
                            		"ConstValue");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleArgument"


    // $ANTLR start "entryRuleAnnotation"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1365:1: entryRuleAnnotation returns [EObject current=null] : iv_ruleAnnotation= ruleAnnotation EOF ;
    public final EObject entryRuleAnnotation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAnnotation = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1366:2: (iv_ruleAnnotation= ruleAnnotation EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1367:2: iv_ruleAnnotation= ruleAnnotation EOF
            {
             newCompositeNode(grammarAccess.getAnnotationRule()); 
            pushFollow(FOLLOW_ruleAnnotation_in_entryRuleAnnotation2831);
            iv_ruleAnnotation=ruleAnnotation();

            state._fsp--;

             current =iv_ruleAnnotation; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAnnotation2841); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAnnotation"


    // $ANTLR start "ruleAnnotation"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1374:1: ruleAnnotation returns [EObject current=null] : (this_AliasAnnotation_0= ruleAliasAnnotation | this_OrderAnnotation_1= ruleOrderAnnotation | this_NamespaceAnnotation_2= ruleNamespaceAnnotation | this_JavaclassAnnotation_3= ruleJavaclassAnnotation ) ;
    public final EObject ruleAnnotation() throws RecognitionException {
        EObject current = null;

        EObject this_AliasAnnotation_0 = null;

        EObject this_OrderAnnotation_1 = null;

        EObject this_NamespaceAnnotation_2 = null;

        EObject this_JavaclassAnnotation_3 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1377:28: ( (this_AliasAnnotation_0= ruleAliasAnnotation | this_OrderAnnotation_1= ruleOrderAnnotation | this_NamespaceAnnotation_2= ruleNamespaceAnnotation | this_JavaclassAnnotation_3= ruleJavaclassAnnotation ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1378:1: (this_AliasAnnotation_0= ruleAliasAnnotation | this_OrderAnnotation_1= ruleOrderAnnotation | this_NamespaceAnnotation_2= ruleNamespaceAnnotation | this_JavaclassAnnotation_3= ruleJavaclassAnnotation )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1378:1: (this_AliasAnnotation_0= ruleAliasAnnotation | this_OrderAnnotation_1= ruleOrderAnnotation | this_NamespaceAnnotation_2= ruleNamespaceAnnotation | this_JavaclassAnnotation_3= ruleJavaclassAnnotation )
            int alt21=4;
            switch ( input.LA(1) ) {
            case 27:
                {
                alt21=1;
                }
                break;
            case 31:
                {
                alt21=2;
                }
                break;
            case 32:
                {
                alt21=3;
                }
                break;
            case 33:
                {
                alt21=4;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 21, 0, input);

                throw nvae;
            }

            switch (alt21) {
                case 1 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1379:5: this_AliasAnnotation_0= ruleAliasAnnotation
                    {
                     
                            newCompositeNode(grammarAccess.getAnnotationAccess().getAliasAnnotationParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleAliasAnnotation_in_ruleAnnotation2888);
                    this_AliasAnnotation_0=ruleAliasAnnotation();

                    state._fsp--;

                     
                            current = this_AliasAnnotation_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1389:5: this_OrderAnnotation_1= ruleOrderAnnotation
                    {
                     
                            newCompositeNode(grammarAccess.getAnnotationAccess().getOrderAnnotationParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleOrderAnnotation_in_ruleAnnotation2915);
                    this_OrderAnnotation_1=ruleOrderAnnotation();

                    state._fsp--;

                     
                            current = this_OrderAnnotation_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1399:5: this_NamespaceAnnotation_2= ruleNamespaceAnnotation
                    {
                     
                            newCompositeNode(grammarAccess.getAnnotationAccess().getNamespaceAnnotationParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleNamespaceAnnotation_in_ruleAnnotation2942);
                    this_NamespaceAnnotation_2=ruleNamespaceAnnotation();

                    state._fsp--;

                     
                            current = this_NamespaceAnnotation_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 4 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1409:5: this_JavaclassAnnotation_3= ruleJavaclassAnnotation
                    {
                     
                            newCompositeNode(grammarAccess.getAnnotationAccess().getJavaclassAnnotationParserRuleCall_3()); 
                        
                    pushFollow(FOLLOW_ruleJavaclassAnnotation_in_ruleAnnotation2969);
                    this_JavaclassAnnotation_3=ruleJavaclassAnnotation();

                    state._fsp--;

                     
                            current = this_JavaclassAnnotation_3; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAnnotation"


    // $ANTLR start "entryRuleAliasAnnotation"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1425:1: entryRuleAliasAnnotation returns [EObject current=null] : iv_ruleAliasAnnotation= ruleAliasAnnotation EOF ;
    public final EObject entryRuleAliasAnnotation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAliasAnnotation = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1426:2: (iv_ruleAliasAnnotation= ruleAliasAnnotation EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1427:2: iv_ruleAliasAnnotation= ruleAliasAnnotation EOF
            {
             newCompositeNode(grammarAccess.getAliasAnnotationRule()); 
            pushFollow(FOLLOW_ruleAliasAnnotation_in_entryRuleAliasAnnotation3004);
            iv_ruleAliasAnnotation=ruleAliasAnnotation();

            state._fsp--;

             current =iv_ruleAliasAnnotation; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAliasAnnotation3014); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAliasAnnotation"


    // $ANTLR start "ruleAliasAnnotation"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1434:1: ruleAliasAnnotation returns [EObject current=null] : (otherlv_0= '@aliases' otherlv_1= '(' otherlv_2= '[' ( (lv_element_3_0= ruleStringRef ) ) (otherlv_4= ',' ( (lv_element_5_0= ruleStringRef ) ) )* otherlv_6= ']' otherlv_7= ')' ) ;
    public final EObject ruleAliasAnnotation() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        EObject lv_element_3_0 = null;

        EObject lv_element_5_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1437:28: ( (otherlv_0= '@aliases' otherlv_1= '(' otherlv_2= '[' ( (lv_element_3_0= ruleStringRef ) ) (otherlv_4= ',' ( (lv_element_5_0= ruleStringRef ) ) )* otherlv_6= ']' otherlv_7= ')' ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1438:1: (otherlv_0= '@aliases' otherlv_1= '(' otherlv_2= '[' ( (lv_element_3_0= ruleStringRef ) ) (otherlv_4= ',' ( (lv_element_5_0= ruleStringRef ) ) )* otherlv_6= ']' otherlv_7= ')' )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1438:1: (otherlv_0= '@aliases' otherlv_1= '(' otherlv_2= '[' ( (lv_element_3_0= ruleStringRef ) ) (otherlv_4= ',' ( (lv_element_5_0= ruleStringRef ) ) )* otherlv_6= ']' otherlv_7= ')' )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1438:3: otherlv_0= '@aliases' otherlv_1= '(' otherlv_2= '[' ( (lv_element_3_0= ruleStringRef ) ) (otherlv_4= ',' ( (lv_element_5_0= ruleStringRef ) ) )* otherlv_6= ']' otherlv_7= ')'
            {
            otherlv_0=(Token)match(input,27,FOLLOW_27_in_ruleAliasAnnotation3051); 

                	newLeafNode(otherlv_0, grammarAccess.getAliasAnnotationAccess().getAliasesKeyword_0());
                
            otherlv_1=(Token)match(input,23,FOLLOW_23_in_ruleAliasAnnotation3063); 

                	newLeafNode(otherlv_1, grammarAccess.getAliasAnnotationAccess().getLeftParenthesisKeyword_1());
                
            otherlv_2=(Token)match(input,28,FOLLOW_28_in_ruleAliasAnnotation3075); 

                	newLeafNode(otherlv_2, grammarAccess.getAliasAnnotationAccess().getLeftSquareBracketKeyword_2());
                
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1450:1: ( (lv_element_3_0= ruleStringRef ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1451:1: (lv_element_3_0= ruleStringRef )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1451:1: (lv_element_3_0= ruleStringRef )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1452:3: lv_element_3_0= ruleStringRef
            {
             
            	        newCompositeNode(grammarAccess.getAliasAnnotationAccess().getElementStringRefParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleStringRef_in_ruleAliasAnnotation3096);
            lv_element_3_0=ruleStringRef();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getAliasAnnotationRule());
            	        }
                   		add(
                   			current, 
                   			"element",
                    		lv_element_3_0, 
                    		"StringRef");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1468:2: (otherlv_4= ',' ( (lv_element_5_0= ruleStringRef ) ) )*
            loop22:
            do {
                int alt22=2;
                int LA22_0 = input.LA(1);

                if ( (LA22_0==29) ) {
                    alt22=1;
                }


                switch (alt22) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1468:4: otherlv_4= ',' ( (lv_element_5_0= ruleStringRef ) )
            	    {
            	    otherlv_4=(Token)match(input,29,FOLLOW_29_in_ruleAliasAnnotation3109); 

            	        	newLeafNode(otherlv_4, grammarAccess.getAliasAnnotationAccess().getCommaKeyword_4_0());
            	        
            	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1472:1: ( (lv_element_5_0= ruleStringRef ) )
            	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1473:1: (lv_element_5_0= ruleStringRef )
            	    {
            	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1473:1: (lv_element_5_0= ruleStringRef )
            	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1474:3: lv_element_5_0= ruleStringRef
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getAliasAnnotationAccess().getElementStringRefParserRuleCall_4_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleStringRef_in_ruleAliasAnnotation3130);
            	    lv_element_5_0=ruleStringRef();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getAliasAnnotationRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"element",
            	            		lv_element_5_0, 
            	            		"StringRef");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop22;
                }
            } while (true);

            otherlv_6=(Token)match(input,30,FOLLOW_30_in_ruleAliasAnnotation3144); 

                	newLeafNode(otherlv_6, grammarAccess.getAliasAnnotationAccess().getRightSquareBracketKeyword_5());
                
            otherlv_7=(Token)match(input,24,FOLLOW_24_in_ruleAliasAnnotation3156); 

                	newLeafNode(otherlv_7, grammarAccess.getAliasAnnotationAccess().getRightParenthesisKeyword_6());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAliasAnnotation"


    // $ANTLR start "entryRuleOrderAnnotation"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1506:1: entryRuleOrderAnnotation returns [EObject current=null] : iv_ruleOrderAnnotation= ruleOrderAnnotation EOF ;
    public final EObject entryRuleOrderAnnotation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleOrderAnnotation = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1507:2: (iv_ruleOrderAnnotation= ruleOrderAnnotation EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1508:2: iv_ruleOrderAnnotation= ruleOrderAnnotation EOF
            {
             newCompositeNode(grammarAccess.getOrderAnnotationRule()); 
            pushFollow(FOLLOW_ruleOrderAnnotation_in_entryRuleOrderAnnotation3192);
            iv_ruleOrderAnnotation=ruleOrderAnnotation();

            state._fsp--;

             current =iv_ruleOrderAnnotation; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleOrderAnnotation3202); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOrderAnnotation"


    // $ANTLR start "ruleOrderAnnotation"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1515:1: ruleOrderAnnotation returns [EObject current=null] : (otherlv_0= '@order' otherlv_1= '(' ( (lv_order_2_0= ruleStringRef ) ) otherlv_3= ')' ) ;
    public final EObject ruleOrderAnnotation() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_order_2_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1518:28: ( (otherlv_0= '@order' otherlv_1= '(' ( (lv_order_2_0= ruleStringRef ) ) otherlv_3= ')' ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1519:1: (otherlv_0= '@order' otherlv_1= '(' ( (lv_order_2_0= ruleStringRef ) ) otherlv_3= ')' )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1519:1: (otherlv_0= '@order' otherlv_1= '(' ( (lv_order_2_0= ruleStringRef ) ) otherlv_3= ')' )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1519:3: otherlv_0= '@order' otherlv_1= '(' ( (lv_order_2_0= ruleStringRef ) ) otherlv_3= ')'
            {
            otherlv_0=(Token)match(input,31,FOLLOW_31_in_ruleOrderAnnotation3239); 

                	newLeafNode(otherlv_0, grammarAccess.getOrderAnnotationAccess().getOrderKeyword_0());
                
            otherlv_1=(Token)match(input,23,FOLLOW_23_in_ruleOrderAnnotation3251); 

                	newLeafNode(otherlv_1, grammarAccess.getOrderAnnotationAccess().getLeftParenthesisKeyword_1());
                
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1527:1: ( (lv_order_2_0= ruleStringRef ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1528:1: (lv_order_2_0= ruleStringRef )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1528:1: (lv_order_2_0= ruleStringRef )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1529:3: lv_order_2_0= ruleStringRef
            {
             
            	        newCompositeNode(grammarAccess.getOrderAnnotationAccess().getOrderStringRefParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleStringRef_in_ruleOrderAnnotation3272);
            lv_order_2_0=ruleStringRef();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getOrderAnnotationRule());
            	        }
                   		set(
                   			current, 
                   			"order",
                    		lv_order_2_0, 
                    		"StringRef");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_3=(Token)match(input,24,FOLLOW_24_in_ruleOrderAnnotation3284); 

                	newLeafNode(otherlv_3, grammarAccess.getOrderAnnotationAccess().getRightParenthesisKeyword_3());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOrderAnnotation"


    // $ANTLR start "entryRuleNamespaceAnnotation"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1557:1: entryRuleNamespaceAnnotation returns [EObject current=null] : iv_ruleNamespaceAnnotation= ruleNamespaceAnnotation EOF ;
    public final EObject entryRuleNamespaceAnnotation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNamespaceAnnotation = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1558:2: (iv_ruleNamespaceAnnotation= ruleNamespaceAnnotation EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1559:2: iv_ruleNamespaceAnnotation= ruleNamespaceAnnotation EOF
            {
             newCompositeNode(grammarAccess.getNamespaceAnnotationRule()); 
            pushFollow(FOLLOW_ruleNamespaceAnnotation_in_entryRuleNamespaceAnnotation3320);
            iv_ruleNamespaceAnnotation=ruleNamespaceAnnotation();

            state._fsp--;

             current =iv_ruleNamespaceAnnotation; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleNamespaceAnnotation3330); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNamespaceAnnotation"


    // $ANTLR start "ruleNamespaceAnnotation"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1566:1: ruleNamespaceAnnotation returns [EObject current=null] : (otherlv_0= '@namespace' otherlv_1= '(' ( (lv_path_2_0= ruleStringRef ) ) otherlv_3= ')' ) ;
    public final EObject ruleNamespaceAnnotation() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_path_2_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1569:28: ( (otherlv_0= '@namespace' otherlv_1= '(' ( (lv_path_2_0= ruleStringRef ) ) otherlv_3= ')' ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1570:1: (otherlv_0= '@namespace' otherlv_1= '(' ( (lv_path_2_0= ruleStringRef ) ) otherlv_3= ')' )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1570:1: (otherlv_0= '@namespace' otherlv_1= '(' ( (lv_path_2_0= ruleStringRef ) ) otherlv_3= ')' )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1570:3: otherlv_0= '@namespace' otherlv_1= '(' ( (lv_path_2_0= ruleStringRef ) ) otherlv_3= ')'
            {
            otherlv_0=(Token)match(input,32,FOLLOW_32_in_ruleNamespaceAnnotation3367); 

                	newLeafNode(otherlv_0, grammarAccess.getNamespaceAnnotationAccess().getNamespaceKeyword_0());
                
            otherlv_1=(Token)match(input,23,FOLLOW_23_in_ruleNamespaceAnnotation3379); 

                	newLeafNode(otherlv_1, grammarAccess.getNamespaceAnnotationAccess().getLeftParenthesisKeyword_1());
                
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1578:1: ( (lv_path_2_0= ruleStringRef ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1579:1: (lv_path_2_0= ruleStringRef )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1579:1: (lv_path_2_0= ruleStringRef )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1580:3: lv_path_2_0= ruleStringRef
            {
             
            	        newCompositeNode(grammarAccess.getNamespaceAnnotationAccess().getPathStringRefParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleStringRef_in_ruleNamespaceAnnotation3400);
            lv_path_2_0=ruleStringRef();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getNamespaceAnnotationRule());
            	        }
                   		set(
                   			current, 
                   			"path",
                    		lv_path_2_0, 
                    		"StringRef");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_3=(Token)match(input,24,FOLLOW_24_in_ruleNamespaceAnnotation3412); 

                	newLeafNode(otherlv_3, grammarAccess.getNamespaceAnnotationAccess().getRightParenthesisKeyword_3());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNamespaceAnnotation"


    // $ANTLR start "entryRuleJavaclassAnnotation"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1608:1: entryRuleJavaclassAnnotation returns [EObject current=null] : iv_ruleJavaclassAnnotation= ruleJavaclassAnnotation EOF ;
    public final EObject entryRuleJavaclassAnnotation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleJavaclassAnnotation = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1609:2: (iv_ruleJavaclassAnnotation= ruleJavaclassAnnotation EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1610:2: iv_ruleJavaclassAnnotation= ruleJavaclassAnnotation EOF
            {
             newCompositeNode(grammarAccess.getJavaclassAnnotationRule()); 
            pushFollow(FOLLOW_ruleJavaclassAnnotation_in_entryRuleJavaclassAnnotation3448);
            iv_ruleJavaclassAnnotation=ruleJavaclassAnnotation();

            state._fsp--;

             current =iv_ruleJavaclassAnnotation; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleJavaclassAnnotation3458); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleJavaclassAnnotation"


    // $ANTLR start "ruleJavaclassAnnotation"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1617:1: ruleJavaclassAnnotation returns [EObject current=null] : (otherlv_0= '@java_class' otherlv_1= '(' ( (lv_classpath_2_0= ruleStringRef ) ) otherlv_3= ')' ) ;
    public final EObject ruleJavaclassAnnotation() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_classpath_2_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1620:28: ( (otherlv_0= '@java_class' otherlv_1= '(' ( (lv_classpath_2_0= ruleStringRef ) ) otherlv_3= ')' ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1621:1: (otherlv_0= '@java_class' otherlv_1= '(' ( (lv_classpath_2_0= ruleStringRef ) ) otherlv_3= ')' )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1621:1: (otherlv_0= '@java_class' otherlv_1= '(' ( (lv_classpath_2_0= ruleStringRef ) ) otherlv_3= ')' )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1621:3: otherlv_0= '@java_class' otherlv_1= '(' ( (lv_classpath_2_0= ruleStringRef ) ) otherlv_3= ')'
            {
            otherlv_0=(Token)match(input,33,FOLLOW_33_in_ruleJavaclassAnnotation3495); 

                	newLeafNode(otherlv_0, grammarAccess.getJavaclassAnnotationAccess().getJava_classKeyword_0());
                
            otherlv_1=(Token)match(input,23,FOLLOW_23_in_ruleJavaclassAnnotation3507); 

                	newLeafNode(otherlv_1, grammarAccess.getJavaclassAnnotationAccess().getLeftParenthesisKeyword_1());
                
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1629:1: ( (lv_classpath_2_0= ruleStringRef ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1630:1: (lv_classpath_2_0= ruleStringRef )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1630:1: (lv_classpath_2_0= ruleStringRef )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1631:3: lv_classpath_2_0= ruleStringRef
            {
             
            	        newCompositeNode(grammarAccess.getJavaclassAnnotationAccess().getClasspathStringRefParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleStringRef_in_ruleJavaclassAnnotation3528);
            lv_classpath_2_0=ruleStringRef();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getJavaclassAnnotationRule());
            	        }
                   		set(
                   			current, 
                   			"classpath",
                    		lv_classpath_2_0, 
                    		"StringRef");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_3=(Token)match(input,24,FOLLOW_24_in_ruleJavaclassAnnotation3540); 

                	newLeafNode(otherlv_3, grammarAccess.getJavaclassAnnotationAccess().getRightParenthesisKeyword_3());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleJavaclassAnnotation"


    // $ANTLR start "entryRuleDefType"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1659:1: entryRuleDefType returns [EObject current=null] : iv_ruleDefType= ruleDefType EOF ;
    public final EObject entryRuleDefType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDefType = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1660:2: (iv_ruleDefType= ruleDefType EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1661:2: iv_ruleDefType= ruleDefType EOF
            {
             newCompositeNode(grammarAccess.getDefTypeRule()); 
            pushFollow(FOLLOW_ruleDefType_in_entryRuleDefType3576);
            iv_ruleDefType=ruleDefType();

            state._fsp--;

             current =iv_ruleDefType; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDefType3586); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDefType"


    // $ANTLR start "ruleDefType"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1668:1: ruleDefType returns [EObject current=null] : ( (otherlv_0= RULE_ID ) ) ;
    public final EObject ruleDefType() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1671:28: ( ( (otherlv_0= RULE_ID ) ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1672:1: ( (otherlv_0= RULE_ID ) )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1672:1: ( (otherlv_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1673:1: (otherlv_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1673:1: (otherlv_0= RULE_ID )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1674:3: otherlv_0= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getDefTypeRule());
            	        }
                    
            otherlv_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDefType3630); 

            		newLeafNode(otherlv_0, grammarAccess.getDefTypeAccess().getNameDefinitionsCrossReference_0()); 
            	

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDefType"


    // $ANTLR start "entryRuleBaseTypeRef"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1693:1: entryRuleBaseTypeRef returns [EObject current=null] : iv_ruleBaseTypeRef= ruleBaseTypeRef EOF ;
    public final EObject entryRuleBaseTypeRef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBaseTypeRef = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1694:2: (iv_ruleBaseTypeRef= ruleBaseTypeRef EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1695:2: iv_ruleBaseTypeRef= ruleBaseTypeRef EOF
            {
             newCompositeNode(grammarAccess.getBaseTypeRefRule()); 
            pushFollow(FOLLOW_ruleBaseTypeRef_in_entryRuleBaseTypeRef3665);
            iv_ruleBaseTypeRef=ruleBaseTypeRef();

            state._fsp--;

             current =iv_ruleBaseTypeRef; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleBaseTypeRef3675); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBaseTypeRef"


    // $ANTLR start "ruleBaseTypeRef"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1702:1: ruleBaseTypeRef returns [EObject current=null] : ( (lv_basicType_0_0= ruleBaseType ) ) ;
    public final EObject ruleBaseTypeRef() throws RecognitionException {
        EObject current = null;

        Enumerator lv_basicType_0_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1705:28: ( ( (lv_basicType_0_0= ruleBaseType ) ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1706:1: ( (lv_basicType_0_0= ruleBaseType ) )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1706:1: ( (lv_basicType_0_0= ruleBaseType ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1707:1: (lv_basicType_0_0= ruleBaseType )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1707:1: (lv_basicType_0_0= ruleBaseType )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1708:3: lv_basicType_0_0= ruleBaseType
            {
             
            	        newCompositeNode(grammarAccess.getBaseTypeRefAccess().getBasicTypeBaseTypeEnumRuleCall_0()); 
            	    
            pushFollow(FOLLOW_ruleBaseType_in_ruleBaseTypeRef3720);
            lv_basicType_0_0=ruleBaseType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getBaseTypeRefRule());
            	        }
                   		set(
                   			current, 
                   			"basicType",
                    		lv_basicType_0_0, 
                    		"BaseType");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBaseTypeRef"


    // $ANTLR start "entryRuleComplexTypeRef"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1732:1: entryRuleComplexTypeRef returns [EObject current=null] : iv_ruleComplexTypeRef= ruleComplexTypeRef EOF ;
    public final EObject entryRuleComplexTypeRef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleComplexTypeRef = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1733:2: (iv_ruleComplexTypeRef= ruleComplexTypeRef EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1734:2: iv_ruleComplexTypeRef= ruleComplexTypeRef EOF
            {
             newCompositeNode(grammarAccess.getComplexTypeRefRule()); 
            pushFollow(FOLLOW_ruleComplexTypeRef_in_entryRuleComplexTypeRef3755);
            iv_ruleComplexTypeRef=ruleComplexTypeRef();

            state._fsp--;

             current =iv_ruleComplexTypeRef; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleComplexTypeRef3765); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleComplexTypeRef"


    // $ANTLR start "ruleComplexTypeRef"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1741:1: ruleComplexTypeRef returns [EObject current=null] : (this_ArrayType_0= ruleArrayType | this_MapType_1= ruleMapType ) ;
    public final EObject ruleComplexTypeRef() throws RecognitionException {
        EObject current = null;

        EObject this_ArrayType_0 = null;

        EObject this_MapType_1 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1744:28: ( (this_ArrayType_0= ruleArrayType | this_MapType_1= ruleMapType ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1745:1: (this_ArrayType_0= ruleArrayType | this_MapType_1= ruleMapType )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1745:1: (this_ArrayType_0= ruleArrayType | this_MapType_1= ruleMapType )
            int alt23=2;
            int LA23_0 = input.LA(1);

            if ( (LA23_0==36) ) {
                alt23=1;
            }
            else if ( (LA23_0==39) ) {
                alt23=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 23, 0, input);

                throw nvae;
            }
            switch (alt23) {
                case 1 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1746:5: this_ArrayType_0= ruleArrayType
                    {
                     
                            newCompositeNode(grammarAccess.getComplexTypeRefAccess().getArrayTypeParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleArrayType_in_ruleComplexTypeRef3812);
                    this_ArrayType_0=ruleArrayType();

                    state._fsp--;

                     
                            current = this_ArrayType_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1756:5: this_MapType_1= ruleMapType
                    {
                     
                            newCompositeNode(grammarAccess.getComplexTypeRefAccess().getMapTypeParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleMapType_in_ruleComplexTypeRef3839);
                    this_MapType_1=ruleMapType();

                    state._fsp--;

                     
                            current = this_MapType_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleComplexTypeRef"


    // $ANTLR start "entryRuleNumberRef"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1772:1: entryRuleNumberRef returns [EObject current=null] : iv_ruleNumberRef= ruleNumberRef EOF ;
    public final EObject entryRuleNumberRef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNumberRef = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1773:2: (iv_ruleNumberRef= ruleNumberRef EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1774:2: iv_ruleNumberRef= ruleNumberRef EOF
            {
             newCompositeNode(grammarAccess.getNumberRefRule()); 
            pushFollow(FOLLOW_ruleNumberRef_in_entryRuleNumberRef3874);
            iv_ruleNumberRef=ruleNumberRef();

            state._fsp--;

             current =iv_ruleNumberRef; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleNumberRef3884); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNumberRef"


    // $ANTLR start "ruleNumberRef"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1781:1: ruleNumberRef returns [EObject current=null] : (this_IntRef_0= ruleIntRef | this_HexRef_1= ruleHexRef | this_DoubleRef_2= ruleDoubleRef ) ;
    public final EObject ruleNumberRef() throws RecognitionException {
        EObject current = null;

        EObject this_IntRef_0 = null;

        EObject this_HexRef_1 = null;

        EObject this_DoubleRef_2 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1784:28: ( (this_IntRef_0= ruleIntRef | this_HexRef_1= ruleHexRef | this_DoubleRef_2= ruleDoubleRef ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1785:1: (this_IntRef_0= ruleIntRef | this_HexRef_1= ruleHexRef | this_DoubleRef_2= ruleDoubleRef )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1785:1: (this_IntRef_0= ruleIntRef | this_HexRef_1= ruleHexRef | this_DoubleRef_2= ruleDoubleRef )
            int alt24=3;
            switch ( input.LA(1) ) {
            case RULE_INT:
                {
                alt24=1;
                }
                break;
            case RULE_HEX:
                {
                alt24=2;
                }
                break;
            case RULE_DOUBLE:
                {
                alt24=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 24, 0, input);

                throw nvae;
            }

            switch (alt24) {
                case 1 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1786:5: this_IntRef_0= ruleIntRef
                    {
                     
                            newCompositeNode(grammarAccess.getNumberRefAccess().getIntRefParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleIntRef_in_ruleNumberRef3931);
                    this_IntRef_0=ruleIntRef();

                    state._fsp--;

                     
                            current = this_IntRef_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1796:5: this_HexRef_1= ruleHexRef
                    {
                     
                            newCompositeNode(grammarAccess.getNumberRefAccess().getHexRefParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleHexRef_in_ruleNumberRef3958);
                    this_HexRef_1=ruleHexRef();

                    state._fsp--;

                     
                            current = this_HexRef_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1806:5: this_DoubleRef_2= ruleDoubleRef
                    {
                     
                            newCompositeNode(grammarAccess.getNumberRefAccess().getDoubleRefParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleDoubleRef_in_ruleNumberRef3985);
                    this_DoubleRef_2=ruleDoubleRef();

                    state._fsp--;

                     
                            current = this_DoubleRef_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNumberRef"


    // $ANTLR start "entryRuleIntRef"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1822:1: entryRuleIntRef returns [EObject current=null] : iv_ruleIntRef= ruleIntRef EOF ;
    public final EObject entryRuleIntRef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIntRef = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1823:2: (iv_ruleIntRef= ruleIntRef EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1824:2: iv_ruleIntRef= ruleIntRef EOF
            {
             newCompositeNode(grammarAccess.getIntRefRule()); 
            pushFollow(FOLLOW_ruleIntRef_in_entryRuleIntRef4020);
            iv_ruleIntRef=ruleIntRef();

            state._fsp--;

             current =iv_ruleIntRef; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleIntRef4030); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIntRef"


    // $ANTLR start "ruleIntRef"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1831:1: ruleIntRef returns [EObject current=null] : ( (lv_int_0_0= RULE_INT ) ) ;
    public final EObject ruleIntRef() throws RecognitionException {
        EObject current = null;

        Token lv_int_0_0=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1834:28: ( ( (lv_int_0_0= RULE_INT ) ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1835:1: ( (lv_int_0_0= RULE_INT ) )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1835:1: ( (lv_int_0_0= RULE_INT ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1836:1: (lv_int_0_0= RULE_INT )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1836:1: (lv_int_0_0= RULE_INT )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1837:3: lv_int_0_0= RULE_INT
            {
            lv_int_0_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleIntRef4071); 

            			newLeafNode(lv_int_0_0, grammarAccess.getIntRefAccess().getIntINTTerminalRuleCall_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getIntRefRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"int",
                    		lv_int_0_0, 
                    		"INT");
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIntRef"


    // $ANTLR start "entryRuleHexRef"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1861:1: entryRuleHexRef returns [EObject current=null] : iv_ruleHexRef= ruleHexRef EOF ;
    public final EObject entryRuleHexRef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleHexRef = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1862:2: (iv_ruleHexRef= ruleHexRef EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1863:2: iv_ruleHexRef= ruleHexRef EOF
            {
             newCompositeNode(grammarAccess.getHexRefRule()); 
            pushFollow(FOLLOW_ruleHexRef_in_entryRuleHexRef4111);
            iv_ruleHexRef=ruleHexRef();

            state._fsp--;

             current =iv_ruleHexRef; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleHexRef4121); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleHexRef"


    // $ANTLR start "ruleHexRef"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1870:1: ruleHexRef returns [EObject current=null] : ( (lv_hex_0_0= RULE_HEX ) ) ;
    public final EObject ruleHexRef() throws RecognitionException {
        EObject current = null;

        Token lv_hex_0_0=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1873:28: ( ( (lv_hex_0_0= RULE_HEX ) ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1874:1: ( (lv_hex_0_0= RULE_HEX ) )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1874:1: ( (lv_hex_0_0= RULE_HEX ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1875:1: (lv_hex_0_0= RULE_HEX )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1875:1: (lv_hex_0_0= RULE_HEX )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1876:3: lv_hex_0_0= RULE_HEX
            {
            lv_hex_0_0=(Token)match(input,RULE_HEX,FOLLOW_RULE_HEX_in_ruleHexRef4162); 

            			newLeafNode(lv_hex_0_0, grammarAccess.getHexRefAccess().getHexHEXTerminalRuleCall_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getHexRefRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"hex",
                    		lv_hex_0_0, 
                    		"HEX");
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleHexRef"


    // $ANTLR start "entryRuleDoubleRef"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1900:1: entryRuleDoubleRef returns [EObject current=null] : iv_ruleDoubleRef= ruleDoubleRef EOF ;
    public final EObject entryRuleDoubleRef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDoubleRef = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1901:2: (iv_ruleDoubleRef= ruleDoubleRef EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1902:2: iv_ruleDoubleRef= ruleDoubleRef EOF
            {
             newCompositeNode(grammarAccess.getDoubleRefRule()); 
            pushFollow(FOLLOW_ruleDoubleRef_in_entryRuleDoubleRef4202);
            iv_ruleDoubleRef=ruleDoubleRef();

            state._fsp--;

             current =iv_ruleDoubleRef; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDoubleRef4212); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDoubleRef"


    // $ANTLR start "ruleDoubleRef"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1909:1: ruleDoubleRef returns [EObject current=null] : ( (lv_double_0_0= RULE_DOUBLE ) ) ;
    public final EObject ruleDoubleRef() throws RecognitionException {
        EObject current = null;

        Token lv_double_0_0=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1912:28: ( ( (lv_double_0_0= RULE_DOUBLE ) ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1913:1: ( (lv_double_0_0= RULE_DOUBLE ) )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1913:1: ( (lv_double_0_0= RULE_DOUBLE ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1914:1: (lv_double_0_0= RULE_DOUBLE )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1914:1: (lv_double_0_0= RULE_DOUBLE )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1915:3: lv_double_0_0= RULE_DOUBLE
            {
            lv_double_0_0=(Token)match(input,RULE_DOUBLE,FOLLOW_RULE_DOUBLE_in_ruleDoubleRef4253); 

            			newLeafNode(lv_double_0_0, grammarAccess.getDoubleRefAccess().getDoubleDOUBLETerminalRuleCall_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getDoubleRefRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"double",
                    		lv_double_0_0, 
                    		"DOUBLE");
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDoubleRef"


    // $ANTLR start "entryRuleBooleanRef"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1939:1: entryRuleBooleanRef returns [EObject current=null] : iv_ruleBooleanRef= ruleBooleanRef EOF ;
    public final EObject entryRuleBooleanRef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBooleanRef = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1940:2: (iv_ruleBooleanRef= ruleBooleanRef EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1941:2: iv_ruleBooleanRef= ruleBooleanRef EOF
            {
             newCompositeNode(grammarAccess.getBooleanRefRule()); 
            pushFollow(FOLLOW_ruleBooleanRef_in_entryRuleBooleanRef4293);
            iv_ruleBooleanRef=ruleBooleanRef();

            state._fsp--;

             current =iv_ruleBooleanRef; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleBooleanRef4303); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBooleanRef"


    // $ANTLR start "ruleBooleanRef"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1948:1: ruleBooleanRef returns [EObject current=null] : ( (lv_boolean_0_0= ruleBOOL ) ) ;
    public final EObject ruleBooleanRef() throws RecognitionException {
        EObject current = null;

        Enumerator lv_boolean_0_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1951:28: ( ( (lv_boolean_0_0= ruleBOOL ) ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1952:1: ( (lv_boolean_0_0= ruleBOOL ) )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1952:1: ( (lv_boolean_0_0= ruleBOOL ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1953:1: (lv_boolean_0_0= ruleBOOL )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1953:1: (lv_boolean_0_0= ruleBOOL )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1954:3: lv_boolean_0_0= ruleBOOL
            {
             
            	        newCompositeNode(grammarAccess.getBooleanRefAccess().getBooleanBOOLEnumRuleCall_0()); 
            	    
            pushFollow(FOLLOW_ruleBOOL_in_ruleBooleanRef4348);
            lv_boolean_0_0=ruleBOOL();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getBooleanRefRule());
            	        }
                   		set(
                   			current, 
                   			"boolean",
                    		lv_boolean_0_0, 
                    		"BOOL");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBooleanRef"


    // $ANTLR start "entryRuleStringRef"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1978:1: entryRuleStringRef returns [EObject current=null] : iv_ruleStringRef= ruleStringRef EOF ;
    public final EObject entryRuleStringRef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStringRef = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1979:2: (iv_ruleStringRef= ruleStringRef EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1980:2: iv_ruleStringRef= ruleStringRef EOF
            {
             newCompositeNode(grammarAccess.getStringRefRule()); 
            pushFollow(FOLLOW_ruleStringRef_in_entryRuleStringRef4383);
            iv_ruleStringRef=ruleStringRef();

            state._fsp--;

             current =iv_ruleStringRef; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleStringRef4393); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleStringRef"


    // $ANTLR start "ruleStringRef"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1987:1: ruleStringRef returns [EObject current=null] : ( (lv_string_0_0= RULE_STRING ) ) ;
    public final EObject ruleStringRef() throws RecognitionException {
        EObject current = null;

        Token lv_string_0_0=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1990:28: ( ( (lv_string_0_0= RULE_STRING ) ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1991:1: ( (lv_string_0_0= RULE_STRING ) )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1991:1: ( (lv_string_0_0= RULE_STRING ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1992:1: (lv_string_0_0= RULE_STRING )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1992:1: (lv_string_0_0= RULE_STRING )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:1993:3: lv_string_0_0= RULE_STRING
            {
            lv_string_0_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleStringRef4434); 

            			newLeafNode(lv_string_0_0, grammarAccess.getStringRefAccess().getStringSTRINGTerminalRuleCall_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getStringRefRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"string",
                    		lv_string_0_0, 
                    		"STRING");
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleStringRef"


    // $ANTLR start "entryRuleImportTypeRef"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2017:1: entryRuleImportTypeRef returns [EObject current=null] : iv_ruleImportTypeRef= ruleImportTypeRef EOF ;
    public final EObject entryRuleImportTypeRef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleImportTypeRef = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2018:2: (iv_ruleImportTypeRef= ruleImportTypeRef EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2019:2: iv_ruleImportTypeRef= ruleImportTypeRef EOF
            {
             newCompositeNode(grammarAccess.getImportTypeRefRule()); 
            pushFollow(FOLLOW_ruleImportTypeRef_in_entryRuleImportTypeRef4474);
            iv_ruleImportTypeRef=ruleImportTypeRef();

            state._fsp--;

             current =iv_ruleImportTypeRef; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleImportTypeRef4484); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleImportTypeRef"


    // $ANTLR start "ruleImportTypeRef"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2026:1: ruleImportTypeRef returns [EObject current=null] : ( (lv_type_0_0= ruleImportType ) ) ;
    public final EObject ruleImportTypeRef() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_type_0_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2029:28: ( ( (lv_type_0_0= ruleImportType ) ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2030:1: ( (lv_type_0_0= ruleImportType ) )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2030:1: ( (lv_type_0_0= ruleImportType ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2031:1: (lv_type_0_0= ruleImportType )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2031:1: (lv_type_0_0= ruleImportType )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2032:3: lv_type_0_0= ruleImportType
            {
             
            	        newCompositeNode(grammarAccess.getImportTypeRefAccess().getTypeImportTypeParserRuleCall_0()); 
            	    
            pushFollow(FOLLOW_ruleImportType_in_ruleImportTypeRef4529);
            lv_type_0_0=ruleImportType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getImportTypeRefRule());
            	        }
                   		set(
                   			current, 
                   			"type",
                    		lv_type_0_0, 
                    		"ImportType");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleImportTypeRef"


    // $ANTLR start "entryRuleImportType"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2056:1: entryRuleImportType returns [String current=null] : iv_ruleImportType= ruleImportType EOF ;
    public final String entryRuleImportType() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleImportType = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2057:2: (iv_ruleImportType= ruleImportType EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2058:2: iv_ruleImportType= ruleImportType EOF
            {
             newCompositeNode(grammarAccess.getImportTypeRule()); 
            pushFollow(FOLLOW_ruleImportType_in_entryRuleImportType4565);
            iv_ruleImportType=ruleImportType();

            state._fsp--;

             current =iv_ruleImportType.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleImportType4576); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleImportType"


    // $ANTLR start "ruleImportType"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2065:1: ruleImportType returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'idl' | kw= 'protocol' | kw= 'schema' ) ;
    public final AntlrDatatypeRuleToken ruleImportType() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2068:28: ( (kw= 'idl' | kw= 'protocol' | kw= 'schema' ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2069:1: (kw= 'idl' | kw= 'protocol' | kw= 'schema' )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2069:1: (kw= 'idl' | kw= 'protocol' | kw= 'schema' )
            int alt25=3;
            switch ( input.LA(1) ) {
            case 34:
                {
                alt25=1;
                }
                break;
            case 13:
                {
                alt25=2;
                }
                break;
            case 35:
                {
                alt25=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 25, 0, input);

                throw nvae;
            }

            switch (alt25) {
                case 1 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2070:2: kw= 'idl'
                    {
                    kw=(Token)match(input,34,FOLLOW_34_in_ruleImportType4614); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getImportTypeAccess().getIdlKeyword_0()); 
                        

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2077:2: kw= 'protocol'
                    {
                    kw=(Token)match(input,13,FOLLOW_13_in_ruleImportType4633); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getImportTypeAccess().getProtocolKeyword_1()); 
                        

                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2084:2: kw= 'schema'
                    {
                    kw=(Token)match(input,35,FOLLOW_35_in_ruleImportType4652); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getImportTypeAccess().getSchemaKeyword_2()); 
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleImportType"


    // $ANTLR start "entryRuleFieldType"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2097:1: entryRuleFieldType returns [EObject current=null] : iv_ruleFieldType= ruleFieldType EOF ;
    public final EObject entryRuleFieldType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFieldType = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2098:2: (iv_ruleFieldType= ruleFieldType EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2099:2: iv_ruleFieldType= ruleFieldType EOF
            {
             newCompositeNode(grammarAccess.getFieldTypeRule()); 
            pushFollow(FOLLOW_ruleFieldType_in_entryRuleFieldType4692);
            iv_ruleFieldType=ruleFieldType();

            state._fsp--;

             current =iv_ruleFieldType; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleFieldType4702); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFieldType"


    // $ANTLR start "ruleFieldType"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2106:1: ruleFieldType returns [EObject current=null] : (this_BaseTypeRef_0= ruleBaseTypeRef | this_ComplexTypeRef_1= ruleComplexTypeRef ) ;
    public final EObject ruleFieldType() throws RecognitionException {
        EObject current = null;

        EObject this_BaseTypeRef_0 = null;

        EObject this_ComplexTypeRef_1 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2109:28: ( (this_BaseTypeRef_0= ruleBaseTypeRef | this_ComplexTypeRef_1= ruleComplexTypeRef ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2110:1: (this_BaseTypeRef_0= ruleBaseTypeRef | this_ComplexTypeRef_1= ruleComplexTypeRef )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2110:1: (this_BaseTypeRef_0= ruleBaseTypeRef | this_ComplexTypeRef_1= ruleComplexTypeRef )
            int alt26=2;
            int LA26_0 = input.LA(1);

            if ( ((LA26_0>=44 && LA26_0<=52)) ) {
                alt26=1;
            }
            else if ( (LA26_0==36||LA26_0==39) ) {
                alt26=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 26, 0, input);

                throw nvae;
            }
            switch (alt26) {
                case 1 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2111:5: this_BaseTypeRef_0= ruleBaseTypeRef
                    {
                     
                            newCompositeNode(grammarAccess.getFieldTypeAccess().getBaseTypeRefParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleBaseTypeRef_in_ruleFieldType4749);
                    this_BaseTypeRef_0=ruleBaseTypeRef();

                    state._fsp--;

                     
                            current = this_BaseTypeRef_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2121:5: this_ComplexTypeRef_1= ruleComplexTypeRef
                    {
                     
                            newCompositeNode(grammarAccess.getFieldTypeAccess().getComplexTypeRefParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleComplexTypeRef_in_ruleFieldType4776);
                    this_ComplexTypeRef_1=ruleComplexTypeRef();

                    state._fsp--;

                     
                            current = this_ComplexTypeRef_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFieldType"


    // $ANTLR start "entryRuleArrayType"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2137:1: entryRuleArrayType returns [EObject current=null] : iv_ruleArrayType= ruleArrayType EOF ;
    public final EObject entryRuleArrayType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleArrayType = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2138:2: (iv_ruleArrayType= ruleArrayType EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2139:2: iv_ruleArrayType= ruleArrayType EOF
            {
             newCompositeNode(grammarAccess.getArrayTypeRule()); 
            pushFollow(FOLLOW_ruleArrayType_in_entryRuleArrayType4811);
            iv_ruleArrayType=ruleArrayType();

            state._fsp--;

             current =iv_ruleArrayType; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleArrayType4821); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleArrayType"


    // $ANTLR start "ruleArrayType"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2146:1: ruleArrayType returns [EObject current=null] : (otherlv_0= 'array' otherlv_1= '<' ( (lv_type_2_0= ruleFieldType ) ) otherlv_3= '>' ) ;
    public final EObject ruleArrayType() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_type_2_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2149:28: ( (otherlv_0= 'array' otherlv_1= '<' ( (lv_type_2_0= ruleFieldType ) ) otherlv_3= '>' ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2150:1: (otherlv_0= 'array' otherlv_1= '<' ( (lv_type_2_0= ruleFieldType ) ) otherlv_3= '>' )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2150:1: (otherlv_0= 'array' otherlv_1= '<' ( (lv_type_2_0= ruleFieldType ) ) otherlv_3= '>' )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2150:3: otherlv_0= 'array' otherlv_1= '<' ( (lv_type_2_0= ruleFieldType ) ) otherlv_3= '>'
            {
            otherlv_0=(Token)match(input,36,FOLLOW_36_in_ruleArrayType4858); 

                	newLeafNode(otherlv_0, grammarAccess.getArrayTypeAccess().getArrayKeyword_0());
                
            otherlv_1=(Token)match(input,37,FOLLOW_37_in_ruleArrayType4870); 

                	newLeafNode(otherlv_1, grammarAccess.getArrayTypeAccess().getLessThanSignKeyword_1());
                
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2158:1: ( (lv_type_2_0= ruleFieldType ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2159:1: (lv_type_2_0= ruleFieldType )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2159:1: (lv_type_2_0= ruleFieldType )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2160:3: lv_type_2_0= ruleFieldType
            {
             
            	        newCompositeNode(grammarAccess.getArrayTypeAccess().getTypeFieldTypeParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleFieldType_in_ruleArrayType4891);
            lv_type_2_0=ruleFieldType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getArrayTypeRule());
            	        }
                   		set(
                   			current, 
                   			"type",
                    		lv_type_2_0, 
                    		"FieldType");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_3=(Token)match(input,38,FOLLOW_38_in_ruleArrayType4903); 

                	newLeafNode(otherlv_3, grammarAccess.getArrayTypeAccess().getGreaterThanSignKeyword_3());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleArrayType"


    // $ANTLR start "entryRuleMapType"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2188:1: entryRuleMapType returns [EObject current=null] : iv_ruleMapType= ruleMapType EOF ;
    public final EObject entryRuleMapType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleMapType = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2189:2: (iv_ruleMapType= ruleMapType EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2190:2: iv_ruleMapType= ruleMapType EOF
            {
             newCompositeNode(grammarAccess.getMapTypeRule()); 
            pushFollow(FOLLOW_ruleMapType_in_entryRuleMapType4939);
            iv_ruleMapType=ruleMapType();

            state._fsp--;

             current =iv_ruleMapType; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleMapType4949); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleMapType"


    // $ANTLR start "ruleMapType"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2197:1: ruleMapType returns [EObject current=null] : (otherlv_0= 'map' otherlv_1= '<' ( (lv_type_2_0= ruleFieldType ) ) otherlv_3= '>' ) ;
    public final EObject ruleMapType() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_type_2_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2200:28: ( (otherlv_0= 'map' otherlv_1= '<' ( (lv_type_2_0= ruleFieldType ) ) otherlv_3= '>' ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2201:1: (otherlv_0= 'map' otherlv_1= '<' ( (lv_type_2_0= ruleFieldType ) ) otherlv_3= '>' )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2201:1: (otherlv_0= 'map' otherlv_1= '<' ( (lv_type_2_0= ruleFieldType ) ) otherlv_3= '>' )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2201:3: otherlv_0= 'map' otherlv_1= '<' ( (lv_type_2_0= ruleFieldType ) ) otherlv_3= '>'
            {
            otherlv_0=(Token)match(input,39,FOLLOW_39_in_ruleMapType4986); 

                	newLeafNode(otherlv_0, grammarAccess.getMapTypeAccess().getMapKeyword_0());
                
            otherlv_1=(Token)match(input,37,FOLLOW_37_in_ruleMapType4998); 

                	newLeafNode(otherlv_1, grammarAccess.getMapTypeAccess().getLessThanSignKeyword_1());
                
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2209:1: ( (lv_type_2_0= ruleFieldType ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2210:1: (lv_type_2_0= ruleFieldType )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2210:1: (lv_type_2_0= ruleFieldType )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2211:3: lv_type_2_0= ruleFieldType
            {
             
            	        newCompositeNode(grammarAccess.getMapTypeAccess().getTypeFieldTypeParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleFieldType_in_ruleMapType5019);
            lv_type_2_0=ruleFieldType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getMapTypeRule());
            	        }
                   		set(
                   			current, 
                   			"type",
                    		lv_type_2_0, 
                    		"FieldType");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_3=(Token)match(input,38,FOLLOW_38_in_ruleMapType5031); 

                	newLeafNode(otherlv_3, grammarAccess.getMapTypeAccess().getGreaterThanSignKeyword_3());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleMapType"


    // $ANTLR start "entryRuleUnionType"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2239:1: entryRuleUnionType returns [EObject current=null] : iv_ruleUnionType= ruleUnionType EOF ;
    public final EObject entryRuleUnionType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleUnionType = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2240:2: (iv_ruleUnionType= ruleUnionType EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2241:2: iv_ruleUnionType= ruleUnionType EOF
            {
             newCompositeNode(grammarAccess.getUnionTypeRule()); 
            pushFollow(FOLLOW_ruleUnionType_in_entryRuleUnionType5067);
            iv_ruleUnionType=ruleUnionType();

            state._fsp--;

             current =iv_ruleUnionType; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleUnionType5077); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleUnionType"


    // $ANTLR start "ruleUnionType"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2248:1: ruleUnionType returns [EObject current=null] : (otherlv_0= 'union' otherlv_1= '{' ( (lv_types_2_0= ruleUnionFieldType ) ) (otherlv_3= ',' ( (lv_types_4_0= ruleUnionFieldType ) ) )* otherlv_5= '}' ( (lv_annotation_6_0= ruleAnnotation ) )? ( (lv_optionalString_7_0= RULE_ID ) )? ruleEndLine ) ;
    public final EObject ruleUnionType() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token lv_optionalString_7_0=null;
        EObject lv_types_2_0 = null;

        EObject lv_types_4_0 = null;

        EObject lv_annotation_6_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2251:28: ( (otherlv_0= 'union' otherlv_1= '{' ( (lv_types_2_0= ruleUnionFieldType ) ) (otherlv_3= ',' ( (lv_types_4_0= ruleUnionFieldType ) ) )* otherlv_5= '}' ( (lv_annotation_6_0= ruleAnnotation ) )? ( (lv_optionalString_7_0= RULE_ID ) )? ruleEndLine ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2252:1: (otherlv_0= 'union' otherlv_1= '{' ( (lv_types_2_0= ruleUnionFieldType ) ) (otherlv_3= ',' ( (lv_types_4_0= ruleUnionFieldType ) ) )* otherlv_5= '}' ( (lv_annotation_6_0= ruleAnnotation ) )? ( (lv_optionalString_7_0= RULE_ID ) )? ruleEndLine )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2252:1: (otherlv_0= 'union' otherlv_1= '{' ( (lv_types_2_0= ruleUnionFieldType ) ) (otherlv_3= ',' ( (lv_types_4_0= ruleUnionFieldType ) ) )* otherlv_5= '}' ( (lv_annotation_6_0= ruleAnnotation ) )? ( (lv_optionalString_7_0= RULE_ID ) )? ruleEndLine )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2252:3: otherlv_0= 'union' otherlv_1= '{' ( (lv_types_2_0= ruleUnionFieldType ) ) (otherlv_3= ',' ( (lv_types_4_0= ruleUnionFieldType ) ) )* otherlv_5= '}' ( (lv_annotation_6_0= ruleAnnotation ) )? ( (lv_optionalString_7_0= RULE_ID ) )? ruleEndLine
            {
            otherlv_0=(Token)match(input,40,FOLLOW_40_in_ruleUnionType5114); 

                	newLeafNode(otherlv_0, grammarAccess.getUnionTypeAccess().getUnionKeyword_0());
                
            otherlv_1=(Token)match(input,14,FOLLOW_14_in_ruleUnionType5126); 

                	newLeafNode(otherlv_1, grammarAccess.getUnionTypeAccess().getLeftCurlyBracketKeyword_1());
                
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2260:1: ( (lv_types_2_0= ruleUnionFieldType ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2261:1: (lv_types_2_0= ruleUnionFieldType )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2261:1: (lv_types_2_0= ruleUnionFieldType )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2262:3: lv_types_2_0= ruleUnionFieldType
            {
             
            	        newCompositeNode(grammarAccess.getUnionTypeAccess().getTypesUnionFieldTypeParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleUnionFieldType_in_ruleUnionType5147);
            lv_types_2_0=ruleUnionFieldType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getUnionTypeRule());
            	        }
                   		add(
                   			current, 
                   			"types",
                    		lv_types_2_0, 
                    		"UnionFieldType");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2278:2: (otherlv_3= ',' ( (lv_types_4_0= ruleUnionFieldType ) ) )*
            loop27:
            do {
                int alt27=2;
                int LA27_0 = input.LA(1);

                if ( (LA27_0==29) ) {
                    alt27=1;
                }


                switch (alt27) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2278:4: otherlv_3= ',' ( (lv_types_4_0= ruleUnionFieldType ) )
            	    {
            	    otherlv_3=(Token)match(input,29,FOLLOW_29_in_ruleUnionType5160); 

            	        	newLeafNode(otherlv_3, grammarAccess.getUnionTypeAccess().getCommaKeyword_3_0());
            	        
            	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2282:1: ( (lv_types_4_0= ruleUnionFieldType ) )
            	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2283:1: (lv_types_4_0= ruleUnionFieldType )
            	    {
            	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2283:1: (lv_types_4_0= ruleUnionFieldType )
            	    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2284:3: lv_types_4_0= ruleUnionFieldType
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getUnionTypeAccess().getTypesUnionFieldTypeParserRuleCall_3_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleUnionFieldType_in_ruleUnionType5181);
            	    lv_types_4_0=ruleUnionFieldType();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getUnionTypeRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"types",
            	            		lv_types_4_0, 
            	            		"UnionFieldType");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop27;
                }
            } while (true);

            otherlv_5=(Token)match(input,15,FOLLOW_15_in_ruleUnionType5195); 

                	newLeafNode(otherlv_5, grammarAccess.getUnionTypeAccess().getRightCurlyBracketKeyword_4());
                
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2304:1: ( (lv_annotation_6_0= ruleAnnotation ) )?
            int alt28=2;
            int LA28_0 = input.LA(1);

            if ( (LA28_0==27||(LA28_0>=31 && LA28_0<=33)) ) {
                alt28=1;
            }
            switch (alt28) {
                case 1 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2305:1: (lv_annotation_6_0= ruleAnnotation )
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2305:1: (lv_annotation_6_0= ruleAnnotation )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2306:3: lv_annotation_6_0= ruleAnnotation
                    {
                     
                    	        newCompositeNode(grammarAccess.getUnionTypeAccess().getAnnotationAnnotationParserRuleCall_5_0()); 
                    	    
                    pushFollow(FOLLOW_ruleAnnotation_in_ruleUnionType5216);
                    lv_annotation_6_0=ruleAnnotation();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getUnionTypeRule());
                    	        }
                           		set(
                           			current, 
                           			"annotation",
                            		lv_annotation_6_0, 
                            		"Annotation");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }

            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2322:3: ( (lv_optionalString_7_0= RULE_ID ) )?
            int alt29=2;
            int LA29_0 = input.LA(1);

            if ( (LA29_0==RULE_ID) ) {
                alt29=1;
            }
            switch (alt29) {
                case 1 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2323:1: (lv_optionalString_7_0= RULE_ID )
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2323:1: (lv_optionalString_7_0= RULE_ID )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2324:3: lv_optionalString_7_0= RULE_ID
                    {
                    lv_optionalString_7_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleUnionType5234); 

                    			newLeafNode(lv_optionalString_7_0, grammarAccess.getUnionTypeAccess().getOptionalStringIDTerminalRuleCall_6_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getUnionTypeRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"optionalString",
                            		lv_optionalString_7_0, 
                            		"ID");
                    	    

                    }


                    }
                    break;

            }

             
                    newCompositeNode(grammarAccess.getUnionTypeAccess().getEndLineParserRuleCall_7()); 
                
            pushFollow(FOLLOW_ruleEndLine_in_ruleUnionType5256);
            ruleEndLine();

            state._fsp--;

             
                    afterParserOrEnumRuleCall();
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleUnionType"


    // $ANTLR start "entryRuleUnionFieldType"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2356:1: entryRuleUnionFieldType returns [EObject current=null] : iv_ruleUnionFieldType= ruleUnionFieldType EOF ;
    public final EObject entryRuleUnionFieldType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleUnionFieldType = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2357:2: (iv_ruleUnionFieldType= ruleUnionFieldType EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2358:2: iv_ruleUnionFieldType= ruleUnionFieldType EOF
            {
             newCompositeNode(grammarAccess.getUnionFieldTypeRule()); 
            pushFollow(FOLLOW_ruleUnionFieldType_in_entryRuleUnionFieldType5291);
            iv_ruleUnionFieldType=ruleUnionFieldType();

            state._fsp--;

             current =iv_ruleUnionFieldType; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleUnionFieldType5301); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleUnionFieldType"


    // $ANTLR start "ruleUnionFieldType"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2365:1: ruleUnionFieldType returns [EObject current=null] : (this_BaseTypeRef_0= ruleBaseTypeRef | this_DefType_1= ruleDefType ) ;
    public final EObject ruleUnionFieldType() throws RecognitionException {
        EObject current = null;

        EObject this_BaseTypeRef_0 = null;

        EObject this_DefType_1 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2368:28: ( (this_BaseTypeRef_0= ruleBaseTypeRef | this_DefType_1= ruleDefType ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2369:1: (this_BaseTypeRef_0= ruleBaseTypeRef | this_DefType_1= ruleDefType )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2369:1: (this_BaseTypeRef_0= ruleBaseTypeRef | this_DefType_1= ruleDefType )
            int alt30=2;
            int LA30_0 = input.LA(1);

            if ( ((LA30_0>=44 && LA30_0<=52)) ) {
                alt30=1;
            }
            else if ( (LA30_0==RULE_ID) ) {
                alt30=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 30, 0, input);

                throw nvae;
            }
            switch (alt30) {
                case 1 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2370:5: this_BaseTypeRef_0= ruleBaseTypeRef
                    {
                     
                            newCompositeNode(grammarAccess.getUnionFieldTypeAccess().getBaseTypeRefParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleBaseTypeRef_in_ruleUnionFieldType5348);
                    this_BaseTypeRef_0=ruleBaseTypeRef();

                    state._fsp--;

                     
                            current = this_BaseTypeRef_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2380:5: this_DefType_1= ruleDefType
                    {
                     
                            newCompositeNode(grammarAccess.getUnionFieldTypeAccess().getDefTypeParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleDefType_in_ruleUnionFieldType5375);
                    this_DefType_1=ruleDefType();

                    state._fsp--;

                     
                            current = this_DefType_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleUnionFieldType"


    // $ANTLR start "entryRuleConstValue"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2396:1: entryRuleConstValue returns [EObject current=null] : iv_ruleConstValue= ruleConstValue EOF ;
    public final EObject entryRuleConstValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConstValue = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2397:2: (iv_ruleConstValue= ruleConstValue EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2398:2: iv_ruleConstValue= ruleConstValue EOF
            {
             newCompositeNode(grammarAccess.getConstValueRule()); 
            pushFollow(FOLLOW_ruleConstValue_in_entryRuleConstValue5410);
            iv_ruleConstValue=ruleConstValue();

            state._fsp--;

             current =iv_ruleConstValue; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleConstValue5420); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleConstValue"


    // $ANTLR start "ruleConstValue"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2405:1: ruleConstValue returns [EObject current=null] : (this_BooleanRef_0= ruleBooleanRef | this_NumberRef_1= ruleNumberRef | this_StringRef_2= ruleStringRef ) ;
    public final EObject ruleConstValue() throws RecognitionException {
        EObject current = null;

        EObject this_BooleanRef_0 = null;

        EObject this_NumberRef_1 = null;

        EObject this_StringRef_2 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2408:28: ( (this_BooleanRef_0= ruleBooleanRef | this_NumberRef_1= ruleNumberRef | this_StringRef_2= ruleStringRef ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2409:1: (this_BooleanRef_0= ruleBooleanRef | this_NumberRef_1= ruleNumberRef | this_StringRef_2= ruleStringRef )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2409:1: (this_BooleanRef_0= ruleBooleanRef | this_NumberRef_1= ruleNumberRef | this_StringRef_2= ruleStringRef )
            int alt31=3;
            switch ( input.LA(1) ) {
            case 42:
            case 43:
                {
                alt31=1;
                }
                break;
            case RULE_INT:
            case RULE_HEX:
            case RULE_DOUBLE:
                {
                alt31=2;
                }
                break;
            case RULE_STRING:
                {
                alt31=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 31, 0, input);

                throw nvae;
            }

            switch (alt31) {
                case 1 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2410:5: this_BooleanRef_0= ruleBooleanRef
                    {
                     
                            newCompositeNode(grammarAccess.getConstValueAccess().getBooleanRefParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleBooleanRef_in_ruleConstValue5467);
                    this_BooleanRef_0=ruleBooleanRef();

                    state._fsp--;

                     
                            current = this_BooleanRef_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2420:5: this_NumberRef_1= ruleNumberRef
                    {
                     
                            newCompositeNode(grammarAccess.getConstValueAccess().getNumberRefParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleNumberRef_in_ruleConstValue5494);
                    this_NumberRef_1=ruleNumberRef();

                    state._fsp--;

                     
                            current = this_NumberRef_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2430:5: this_StringRef_2= ruleStringRef
                    {
                     
                            newCompositeNode(grammarAccess.getConstValueAccess().getStringRefParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleStringRef_in_ruleConstValue5521);
                    this_StringRef_2=ruleStringRef();

                    state._fsp--;

                     
                            current = this_StringRef_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleConstValue"


    // $ANTLR start "entryRuleListSeparator"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2446:1: entryRuleListSeparator returns [String current=null] : iv_ruleListSeparator= ruleListSeparator EOF ;
    public final String entryRuleListSeparator() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleListSeparator = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2447:2: (iv_ruleListSeparator= ruleListSeparator EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2448:2: iv_ruleListSeparator= ruleListSeparator EOF
            {
             newCompositeNode(grammarAccess.getListSeparatorRule()); 
            pushFollow(FOLLOW_ruleListSeparator_in_entryRuleListSeparator5557);
            iv_ruleListSeparator=ruleListSeparator();

            state._fsp--;

             current =iv_ruleListSeparator.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleListSeparator5568); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleListSeparator"


    // $ANTLR start "ruleListSeparator"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2455:1: ruleListSeparator returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= ',' ;
    public final AntlrDatatypeRuleToken ruleListSeparator() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2458:28: (kw= ',' )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2460:2: kw= ','
            {
            kw=(Token)match(input,29,FOLLOW_29_in_ruleListSeparator5605); 

                    current.merge(kw);
                    newLeafNode(kw, grammarAccess.getListSeparatorAccess().getCommaKeyword()); 
                

            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleListSeparator"


    // $ANTLR start "entryRuleEndLine"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2475:1: entryRuleEndLine returns [String current=null] : iv_ruleEndLine= ruleEndLine EOF ;
    public final String entryRuleEndLine() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleEndLine = null;


        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2476:2: (iv_ruleEndLine= ruleEndLine EOF )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2477:2: iv_ruleEndLine= ruleEndLine EOF
            {
             newCompositeNode(grammarAccess.getEndLineRule()); 
            pushFollow(FOLLOW_ruleEndLine_in_entryRuleEndLine5647);
            iv_ruleEndLine=ruleEndLine();

            state._fsp--;

             current =iv_ruleEndLine.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleEndLine5658); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEndLine"


    // $ANTLR start "ruleEndLine"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2484:1: ruleEndLine returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= ';' ;
    public final AntlrDatatypeRuleToken ruleEndLine() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2487:28: (kw= ';' )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2489:2: kw= ';'
            {
            kw=(Token)match(input,41,FOLLOW_41_in_ruleEndLine5695); 

                    current.merge(kw);
                    newLeafNode(kw, grammarAccess.getEndLineAccess().getSemicolonKeyword()); 
                

            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEndLine"


    // $ANTLR start "ruleBOOL"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2502:1: ruleBOOL returns [Enumerator current=null] : ( (enumLiteral_0= 'false' ) | (enumLiteral_1= 'true' ) ) ;
    public final Enumerator ruleBOOL() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;

         enterRule(); 
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2504:28: ( ( (enumLiteral_0= 'false' ) | (enumLiteral_1= 'true' ) ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2505:1: ( (enumLiteral_0= 'false' ) | (enumLiteral_1= 'true' ) )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2505:1: ( (enumLiteral_0= 'false' ) | (enumLiteral_1= 'true' ) )
            int alt32=2;
            int LA32_0 = input.LA(1);

            if ( (LA32_0==42) ) {
                alt32=1;
            }
            else if ( (LA32_0==43) ) {
                alt32=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 32, 0, input);

                throw nvae;
            }
            switch (alt32) {
                case 1 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2505:2: (enumLiteral_0= 'false' )
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2505:2: (enumLiteral_0= 'false' )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2505:4: enumLiteral_0= 'false'
                    {
                    enumLiteral_0=(Token)match(input,42,FOLLOW_42_in_ruleBOOL5748); 

                            current = grammarAccess.getBOOLAccess().getFalseEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_0, grammarAccess.getBOOLAccess().getFalseEnumLiteralDeclaration_0()); 
                        

                    }


                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2511:6: (enumLiteral_1= 'true' )
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2511:6: (enumLiteral_1= 'true' )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2511:8: enumLiteral_1= 'true'
                    {
                    enumLiteral_1=(Token)match(input,43,FOLLOW_43_in_ruleBOOL5765); 

                            current = grammarAccess.getBOOLAccess().getTrueEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_1, grammarAccess.getBOOLAccess().getTrueEnumLiteralDeclaration_1()); 
                        

                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBOOL"


    // $ANTLR start "ruleBaseType"
    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2521:1: ruleBaseType returns [Enumerator current=null] : ( (enumLiteral_0= 'int' ) | (enumLiteral_1= 'long' ) | (enumLiteral_2= 'string' ) | (enumLiteral_3= 'boolean' ) | (enumLiteral_4= 'float' ) | (enumLiteral_5= 'double' ) | (enumLiteral_6= 'null' ) | (enumLiteral_7= 'bytes' ) | (enumLiteral_8= 'void' ) ) ;
    public final Enumerator ruleBaseType() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;
        Token enumLiteral_2=null;
        Token enumLiteral_3=null;
        Token enumLiteral_4=null;
        Token enumLiteral_5=null;
        Token enumLiteral_6=null;
        Token enumLiteral_7=null;
        Token enumLiteral_8=null;

         enterRule(); 
        try {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2523:28: ( ( (enumLiteral_0= 'int' ) | (enumLiteral_1= 'long' ) | (enumLiteral_2= 'string' ) | (enumLiteral_3= 'boolean' ) | (enumLiteral_4= 'float' ) | (enumLiteral_5= 'double' ) | (enumLiteral_6= 'null' ) | (enumLiteral_7= 'bytes' ) | (enumLiteral_8= 'void' ) ) )
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2524:1: ( (enumLiteral_0= 'int' ) | (enumLiteral_1= 'long' ) | (enumLiteral_2= 'string' ) | (enumLiteral_3= 'boolean' ) | (enumLiteral_4= 'float' ) | (enumLiteral_5= 'double' ) | (enumLiteral_6= 'null' ) | (enumLiteral_7= 'bytes' ) | (enumLiteral_8= 'void' ) )
            {
            // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2524:1: ( (enumLiteral_0= 'int' ) | (enumLiteral_1= 'long' ) | (enumLiteral_2= 'string' ) | (enumLiteral_3= 'boolean' ) | (enumLiteral_4= 'float' ) | (enumLiteral_5= 'double' ) | (enumLiteral_6= 'null' ) | (enumLiteral_7= 'bytes' ) | (enumLiteral_8= 'void' ) )
            int alt33=9;
            switch ( input.LA(1) ) {
            case 44:
                {
                alt33=1;
                }
                break;
            case 45:
                {
                alt33=2;
                }
                break;
            case 46:
                {
                alt33=3;
                }
                break;
            case 47:
                {
                alt33=4;
                }
                break;
            case 48:
                {
                alt33=5;
                }
                break;
            case 49:
                {
                alt33=6;
                }
                break;
            case 50:
                {
                alt33=7;
                }
                break;
            case 51:
                {
                alt33=8;
                }
                break;
            case 52:
                {
                alt33=9;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 33, 0, input);

                throw nvae;
            }

            switch (alt33) {
                case 1 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2524:2: (enumLiteral_0= 'int' )
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2524:2: (enumLiteral_0= 'int' )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2524:4: enumLiteral_0= 'int'
                    {
                    enumLiteral_0=(Token)match(input,44,FOLLOW_44_in_ruleBaseType5810); 

                            current = grammarAccess.getBaseTypeAccess().getIntEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_0, grammarAccess.getBaseTypeAccess().getIntEnumLiteralDeclaration_0()); 
                        

                    }


                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2530:6: (enumLiteral_1= 'long' )
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2530:6: (enumLiteral_1= 'long' )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2530:8: enumLiteral_1= 'long'
                    {
                    enumLiteral_1=(Token)match(input,45,FOLLOW_45_in_ruleBaseType5827); 

                            current = grammarAccess.getBaseTypeAccess().getLongEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_1, grammarAccess.getBaseTypeAccess().getLongEnumLiteralDeclaration_1()); 
                        

                    }


                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2536:6: (enumLiteral_2= 'string' )
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2536:6: (enumLiteral_2= 'string' )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2536:8: enumLiteral_2= 'string'
                    {
                    enumLiteral_2=(Token)match(input,46,FOLLOW_46_in_ruleBaseType5844); 

                            current = grammarAccess.getBaseTypeAccess().getStringEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_2, grammarAccess.getBaseTypeAccess().getStringEnumLiteralDeclaration_2()); 
                        

                    }


                    }
                    break;
                case 4 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2542:6: (enumLiteral_3= 'boolean' )
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2542:6: (enumLiteral_3= 'boolean' )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2542:8: enumLiteral_3= 'boolean'
                    {
                    enumLiteral_3=(Token)match(input,47,FOLLOW_47_in_ruleBaseType5861); 

                            current = grammarAccess.getBaseTypeAccess().getBooleanEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_3, grammarAccess.getBaseTypeAccess().getBooleanEnumLiteralDeclaration_3()); 
                        

                    }


                    }
                    break;
                case 5 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2548:6: (enumLiteral_4= 'float' )
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2548:6: (enumLiteral_4= 'float' )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2548:8: enumLiteral_4= 'float'
                    {
                    enumLiteral_4=(Token)match(input,48,FOLLOW_48_in_ruleBaseType5878); 

                            current = grammarAccess.getBaseTypeAccess().getFloatEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_4, grammarAccess.getBaseTypeAccess().getFloatEnumLiteralDeclaration_4()); 
                        

                    }


                    }
                    break;
                case 6 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2554:6: (enumLiteral_5= 'double' )
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2554:6: (enumLiteral_5= 'double' )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2554:8: enumLiteral_5= 'double'
                    {
                    enumLiteral_5=(Token)match(input,49,FOLLOW_49_in_ruleBaseType5895); 

                            current = grammarAccess.getBaseTypeAccess().getDoubleEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_5, grammarAccess.getBaseTypeAccess().getDoubleEnumLiteralDeclaration_5()); 
                        

                    }


                    }
                    break;
                case 7 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2560:6: (enumLiteral_6= 'null' )
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2560:6: (enumLiteral_6= 'null' )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2560:8: enumLiteral_6= 'null'
                    {
                    enumLiteral_6=(Token)match(input,50,FOLLOW_50_in_ruleBaseType5912); 

                            current = grammarAccess.getBaseTypeAccess().getNullEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_6, grammarAccess.getBaseTypeAccess().getNullEnumLiteralDeclaration_6()); 
                        

                    }


                    }
                    break;
                case 8 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2566:6: (enumLiteral_7= 'bytes' )
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2566:6: (enumLiteral_7= 'bytes' )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2566:8: enumLiteral_7= 'bytes'
                    {
                    enumLiteral_7=(Token)match(input,51,FOLLOW_51_in_ruleBaseType5929); 

                            current = grammarAccess.getBaseTypeAccess().getBytesEnumLiteralDeclaration_7().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_7, grammarAccess.getBaseTypeAccess().getBytesEnumLiteralDeclaration_7()); 
                        

                    }


                    }
                    break;
                case 9 :
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2572:6: (enumLiteral_8= 'void' )
                    {
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2572:6: (enumLiteral_8= 'void' )
                    // ../de.thwildau.tm.moses.avro/src-gen/de/thwildau/tm/moses/avro/parser/antlr/internal/InternalIdl.g:2572:8: enumLiteral_8= 'void'
                    {
                    enumLiteral_8=(Token)match(input,52,FOLLOW_52_in_ruleBaseType5946); 

                            current = grammarAccess.getBaseTypeAccess().getVoidEnumLiteralDeclaration_8().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_8, grammarAccess.getBaseTypeAccess().getVoidEnumLiteralDeclaration_8()); 
                        

                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBaseType"

    // Delegated rules


    protected DFA4 dfa4 = new DFA4(this);
    static final String DFA4_eotS =
        "\23\uffff";
    static final String DFA4_eofS =
        "\5\uffff\11\22\5\uffff";
    static final String DFA4_minS =
        "\1\4\4\uffff\11\4\3\uffff\1\4\1\uffff";
    static final String DFA4_maxS =
        "\1\64\4\uffff\11\64\3\uffff\1\32\1\uffff";
    static final String DFA4_acceptS =
        "\1\uffff\1\1\1\2\1\3\1\4\11\uffff\1\6\1\7\1\10\1\uffff\1\5";
    static final String DFA4_specialS =
        "\23\uffff}>";
    static final String[] DFA4_transitionS = {
            "\1\17\13\uffff\1\4\1\3\1\1\1\2\7\uffff\1\20\3\uffff\3\20\2"+
            "\uffff\1\16\2\uffff\1\16\4\uffff\1\5\1\6\1\7\1\10\1\11\1\12"+
            "\1\13\1\14\1\15",
            "",
            "",
            "",
            "",
            "\1\21\12\uffff\5\22\6\uffff\1\17\1\22\3\uffff\3\22\2\uffff"+
            "\1\22\2\uffff\1\22\4\uffff\11\22",
            "\1\21\12\uffff\5\22\6\uffff\1\17\1\22\3\uffff\3\22\2\uffff"+
            "\1\22\2\uffff\1\22\4\uffff\11\22",
            "\1\21\12\uffff\5\22\6\uffff\1\17\1\22\3\uffff\3\22\2\uffff"+
            "\1\22\2\uffff\1\22\4\uffff\11\22",
            "\1\21\12\uffff\5\22\6\uffff\1\17\1\22\3\uffff\3\22\2\uffff"+
            "\1\22\2\uffff\1\22\4\uffff\11\22",
            "\1\21\12\uffff\5\22\6\uffff\1\17\1\22\3\uffff\3\22\2\uffff"+
            "\1\22\2\uffff\1\22\4\uffff\11\22",
            "\1\21\12\uffff\5\22\6\uffff\1\17\1\22\3\uffff\3\22\2\uffff"+
            "\1\22\2\uffff\1\22\4\uffff\11\22",
            "\1\21\12\uffff\5\22\6\uffff\1\17\1\22\3\uffff\3\22\2\uffff"+
            "\1\22\2\uffff\1\22\4\uffff\11\22",
            "\1\21\12\uffff\5\22\6\uffff\1\17\1\22\3\uffff\3\22\2\uffff"+
            "\1\22\2\uffff\1\22\4\uffff\11\22",
            "\1\21\12\uffff\5\22\6\uffff\1\17\1\22\3\uffff\3\22\2\uffff"+
            "\1\22\2\uffff\1\22\4\uffff\11\22",
            "",
            "",
            "",
            "\1\22\22\uffff\1\17\2\uffff\1\22",
            ""
    };

    static final short[] DFA4_eot = DFA.unpackEncodedString(DFA4_eotS);
    static final short[] DFA4_eof = DFA.unpackEncodedString(DFA4_eofS);
    static final char[] DFA4_min = DFA.unpackEncodedStringToUnsignedChars(DFA4_minS);
    static final char[] DFA4_max = DFA.unpackEncodedStringToUnsignedChars(DFA4_maxS);
    static final short[] DFA4_accept = DFA.unpackEncodedString(DFA4_acceptS);
    static final short[] DFA4_special = DFA.unpackEncodedString(DFA4_specialS);
    static final short[][] DFA4_transition;

    static {
        int numStates = DFA4_transitionS.length;
        DFA4_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA4_transition[i] = DFA.unpackEncodedString(DFA4_transitionS[i]);
        }
    }

    class DFA4 extends DFA {

        public DFA4(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 4;
            this.eot = DFA4_eot;
            this.eof = DFA4_eof;
            this.min = DFA4_min;
            this.max = DFA4_max;
            this.accept = DFA4_accept;
            this.special = DFA4_special;
            this.transition = DFA4_transition;
        }
        public String getDescription() {
            return "225:1: (this_Enum_0= ruleEnum | this_FixedLengthField_1= ruleFixedLengthField | this_Record_2= ruleRecord | this_Error_3= ruleError | this_BaseTypeRef_4= ruleBaseTypeRef | this_ComplexTypeRef_5= ruleComplexTypeRef | this_RPCMessage_6= ruleRPCMessage | this_Annotation_7= ruleAnnotation )";
        }
    }
 

    public static final BitSet FOLLOW_ruleAvroIdl_in_entryRuleAvroIdl75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAvroIdl85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNamespaceAnnotation_in_ruleAvroIdl131 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_ruleProtocol_in_ruleAvroIdl153 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleProtocol_in_entryRuleProtocol189 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleProtocol199 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_13_in_ruleProtocol236 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleProtocol253 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleProtocol270 = new BitSet(new long[]{0x001FF093881F8010L});
    public static final BitSet FOLLOW_ruleImports_in_ruleProtocol291 = new BitSet(new long[]{0x001FF093881F8010L});
    public static final BitSet FOLLOW_ruleDefinitions_in_ruleProtocol313 = new BitSet(new long[]{0x001FF093880F8010L});
    public static final BitSet FOLLOW_15_in_ruleProtocol326 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDefinitions_in_entryRuleDefinitions362 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDefinitions372 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEnum_in_ruleDefinitions419 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFixedLengthField_in_ruleDefinitions446 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRecord_in_ruleDefinitions473 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleError_in_ruleDefinitions500 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBaseTypeRef_in_ruleDefinitions527 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleComplexTypeRef_in_ruleDefinitions554 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRPCMessage_in_ruleDefinitions581 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAnnotation_in_ruleDefinitions608 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleReservedIdentifiers_in_entryRuleReservedIdentifiers644 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleReservedIdentifiers655 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_16_in_ruleReservedIdentifiers693 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_17_in_ruleReservedIdentifiers712 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_18_in_ruleReservedIdentifiers731 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_19_in_ruleReservedIdentifiers750 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_20_in_ruleReservedIdentifiers769 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_21_in_ruleReservedIdentifiers788 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleError_in_entryRuleError828 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleError838 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_16_in_ruleError875 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleError892 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleError909 = new BitSet(new long[]{0x001FF19000008010L});
    public static final BitSet FOLLOW_ruleField_in_ruleError930 = new BitSet(new long[]{0x001FF19000008010L});
    public static final BitSet FOLLOW_15_in_ruleError943 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRecord_in_entryRuleRecord979 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRecord989 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_17_in_ruleRecord1026 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleRecord1043 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleRecord1060 = new BitSet(new long[]{0x001FF193880F8010L});
    public static final BitSet FOLLOW_ruleAnnotation_in_ruleRecord1082 = new BitSet(new long[]{0x001FF19000000010L});
    public static final BitSet FOLLOW_ruleField_in_ruleRecord1104 = new BitSet(new long[]{0x001FF193880F8010L});
    public static final BitSet FOLLOW_15_in_ruleRecord1118 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleField_in_entryRuleField1154 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleField1164 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFieldType_in_ruleField1211 = new BitSet(new long[]{0x001FF093880F0010L});
    public static final BitSet FOLLOW_ruleAnnotation_in_ruleField1232 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleField1250 = new BitSet(new long[]{0x0000020000400000L});
    public static final BitSet FOLLOW_22_in_ruleField1268 = new BitSet(new long[]{0x00000C00000001E0L});
    public static final BitSet FOLLOW_ruleConstValue_in_ruleField1289 = new BitSet(new long[]{0x0000020000400000L});
    public static final BitSet FOLLOW_ruleEndLine_in_ruleField1307 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDefType_in_ruleField1335 = new BitSet(new long[]{0x001FF093880F0010L});
    public static final BitSet FOLLOW_ruleAnnotation_in_ruleField1356 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleField1374 = new BitSet(new long[]{0x0000020000400000L});
    public static final BitSet FOLLOW_ruleEndLine_in_ruleField1395 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUnionType_in_ruleField1423 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEnum_in_entryRuleEnum1458 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleEnum1468 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_18_in_ruleEnum1505 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleEnum1522 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleEnum1539 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleEnumFields_in_ruleEnum1560 = new BitSet(new long[]{0x0000000020008000L});
    public static final BitSet FOLLOW_ruleListSeparator_in_ruleEnum1577 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleEnumFields_in_ruleEnum1597 = new BitSet(new long[]{0x0000000020008000L});
    public static final BitSet FOLLOW_15_in_ruleEnum1611 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEnumFields_in_entryRuleEnumFields1647 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleEnumFields1657 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleEnumFields1698 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFixedLengthField_in_entryRuleFixedLengthField1738 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFixedLengthField1748 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_19_in_ruleFixedLengthField1785 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleFixedLengthField1802 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_ruleFixedLengthField1819 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleFixedLengthField1836 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleFixedLengthField1853 = new BitSet(new long[]{0x0000020000400000L});
    public static final BitSet FOLLOW_ruleEndLine_in_ruleFixedLengthField1869 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleImports_in_entryRuleImports1904 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleImports1914 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_20_in_ruleImports1951 = new BitSet(new long[]{0x0000000C00002000L});
    public static final BitSet FOLLOW_ruleImportTypeRef_in_ruleImports1972 = new BitSet(new long[]{0x00000C00000001E0L});
    public static final BitSet FOLLOW_ruleStringRef_in_ruleImports1993 = new BitSet(new long[]{0x0000020000400000L});
    public static final BitSet FOLLOW_ruleEndLine_in_ruleImports2014 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRPCMessage_in_entryRuleRPCMessage2050 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRPCMessage2060 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleReturnType_in_ruleRPCMessage2106 = new BitSet(new long[]{0x0000000004000010L});
    public static final BitSet FOLLOW_ruleName_in_ruleRPCMessage2127 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_ruleRPCMessage2139 = new BitSet(new long[]{0x001FF00001000010L});
    public static final BitSet FOLLOW_ruleArgument_in_ruleRPCMessage2161 = new BitSet(new long[]{0x0000000021000000L});
    public static final BitSet FOLLOW_ruleListSeparator_in_ruleRPCMessage2178 = new BitSet(new long[]{0x001FF00000000010L});
    public static final BitSet FOLLOW_ruleArgument_in_ruleRPCMessage2198 = new BitSet(new long[]{0x0000000021000000L});
    public static final BitSet FOLLOW_24_in_ruleRPCMessage2214 = new BitSet(new long[]{0x0000020002600000L});
    public static final BitSet FOLLOW_25_in_ruleRPCMessage2227 = new BitSet(new long[]{0x0000020000600000L});
    public static final BitSet FOLLOW_ruleThrows_in_ruleRPCMessage2250 = new BitSet(new long[]{0x0000020000400000L});
    public static final BitSet FOLLOW_ruleEndLine_in_ruleRPCMessage2267 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleName_in_entryRuleName2302 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleName2312 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleName2354 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_26_in_ruleName2384 = new BitSet(new long[]{0x00000000003F0000L});
    public static final BitSet FOLLOW_ruleReservedIdentifiers_in_ruleName2413 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_26_in_ruleName2424 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleReturnType_in_entryRuleReturnType2461 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleReturnType2471 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBaseTypeRef_in_ruleReturnType2518 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleReturnType2543 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleThrows_in_entryRuleThrows2579 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleThrows2589 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_21_in_ruleThrows2626 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleThrows2646 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleArgument_in_entryRuleArgument2682 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleArgument2692 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleReturnType_in_ruleArgument2738 = new BitSet(new long[]{0x0000000004000010L});
    public static final BitSet FOLLOW_ruleName_in_ruleArgument2759 = new BitSet(new long[]{0x0000000000400002L});
    public static final BitSet FOLLOW_22_in_ruleArgument2772 = new BitSet(new long[]{0x00000C00000001E0L});
    public static final BitSet FOLLOW_ruleConstValue_in_ruleArgument2793 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAnnotation_in_entryRuleAnnotation2831 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAnnotation2841 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAliasAnnotation_in_ruleAnnotation2888 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOrderAnnotation_in_ruleAnnotation2915 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNamespaceAnnotation_in_ruleAnnotation2942 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJavaclassAnnotation_in_ruleAnnotation2969 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAliasAnnotation_in_entryRuleAliasAnnotation3004 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAliasAnnotation3014 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_27_in_ruleAliasAnnotation3051 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_ruleAliasAnnotation3063 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_ruleAliasAnnotation3075 = new BitSet(new long[]{0x00000C00000001E0L});
    public static final BitSet FOLLOW_ruleStringRef_in_ruleAliasAnnotation3096 = new BitSet(new long[]{0x0000000060000000L});
    public static final BitSet FOLLOW_29_in_ruleAliasAnnotation3109 = new BitSet(new long[]{0x00000C00000001E0L});
    public static final BitSet FOLLOW_ruleStringRef_in_ruleAliasAnnotation3130 = new BitSet(new long[]{0x0000000060000000L});
    public static final BitSet FOLLOW_30_in_ruleAliasAnnotation3144 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleAliasAnnotation3156 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOrderAnnotation_in_entryRuleOrderAnnotation3192 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOrderAnnotation3202 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_31_in_ruleOrderAnnotation3239 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_ruleOrderAnnotation3251 = new BitSet(new long[]{0x00000C00000001E0L});
    public static final BitSet FOLLOW_ruleStringRef_in_ruleOrderAnnotation3272 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleOrderAnnotation3284 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNamespaceAnnotation_in_entryRuleNamespaceAnnotation3320 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNamespaceAnnotation3330 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_32_in_ruleNamespaceAnnotation3367 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_ruleNamespaceAnnotation3379 = new BitSet(new long[]{0x00000C00000001E0L});
    public static final BitSet FOLLOW_ruleStringRef_in_ruleNamespaceAnnotation3400 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleNamespaceAnnotation3412 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJavaclassAnnotation_in_entryRuleJavaclassAnnotation3448 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleJavaclassAnnotation3458 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_33_in_ruleJavaclassAnnotation3495 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_ruleJavaclassAnnotation3507 = new BitSet(new long[]{0x00000C00000001E0L});
    public static final BitSet FOLLOW_ruleStringRef_in_ruleJavaclassAnnotation3528 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleJavaclassAnnotation3540 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDefType_in_entryRuleDefType3576 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDefType3586 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleDefType3630 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBaseTypeRef_in_entryRuleBaseTypeRef3665 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBaseTypeRef3675 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBaseType_in_ruleBaseTypeRef3720 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleComplexTypeRef_in_entryRuleComplexTypeRef3755 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleComplexTypeRef3765 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleArrayType_in_ruleComplexTypeRef3812 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleMapType_in_ruleComplexTypeRef3839 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNumberRef_in_entryRuleNumberRef3874 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNumberRef3884 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIntRef_in_ruleNumberRef3931 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleHexRef_in_ruleNumberRef3958 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDoubleRef_in_ruleNumberRef3985 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIntRef_in_entryRuleIntRef4020 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleIntRef4030 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleIntRef4071 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleHexRef_in_entryRuleHexRef4111 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleHexRef4121 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_HEX_in_ruleHexRef4162 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDoubleRef_in_entryRuleDoubleRef4202 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDoubleRef4212 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_DOUBLE_in_ruleDoubleRef4253 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBooleanRef_in_entryRuleBooleanRef4293 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBooleanRef4303 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBOOL_in_ruleBooleanRef4348 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStringRef_in_entryRuleStringRef4383 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleStringRef4393 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleStringRef4434 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleImportTypeRef_in_entryRuleImportTypeRef4474 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleImportTypeRef4484 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleImportType_in_ruleImportTypeRef4529 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleImportType_in_entryRuleImportType4565 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleImportType4576 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_34_in_ruleImportType4614 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_13_in_ruleImportType4633 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_35_in_ruleImportType4652 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFieldType_in_entryRuleFieldType4692 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFieldType4702 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBaseTypeRef_in_ruleFieldType4749 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleComplexTypeRef_in_ruleFieldType4776 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleArrayType_in_entryRuleArrayType4811 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleArrayType4821 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_36_in_ruleArrayType4858 = new BitSet(new long[]{0x0000002000000000L});
    public static final BitSet FOLLOW_37_in_ruleArrayType4870 = new BitSet(new long[]{0x001FF09000000000L});
    public static final BitSet FOLLOW_ruleFieldType_in_ruleArrayType4891 = new BitSet(new long[]{0x0000004000000000L});
    public static final BitSet FOLLOW_38_in_ruleArrayType4903 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleMapType_in_entryRuleMapType4939 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleMapType4949 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_39_in_ruleMapType4986 = new BitSet(new long[]{0x0000002000000000L});
    public static final BitSet FOLLOW_37_in_ruleMapType4998 = new BitSet(new long[]{0x001FF09000000000L});
    public static final BitSet FOLLOW_ruleFieldType_in_ruleMapType5019 = new BitSet(new long[]{0x0000004000000000L});
    public static final BitSet FOLLOW_38_in_ruleMapType5031 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUnionType_in_entryRuleUnionType5067 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleUnionType5077 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_40_in_ruleUnionType5114 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleUnionType5126 = new BitSet(new long[]{0x001FF00000000010L});
    public static final BitSet FOLLOW_ruleUnionFieldType_in_ruleUnionType5147 = new BitSet(new long[]{0x0000000020008000L});
    public static final BitSet FOLLOW_29_in_ruleUnionType5160 = new BitSet(new long[]{0x001FF00000000010L});
    public static final BitSet FOLLOW_ruleUnionFieldType_in_ruleUnionType5181 = new BitSet(new long[]{0x0000000020008000L});
    public static final BitSet FOLLOW_15_in_ruleUnionType5195 = new BitSet(new long[]{0x001FF293884F0010L});
    public static final BitSet FOLLOW_ruleAnnotation_in_ruleUnionType5216 = new BitSet(new long[]{0x0000020000400010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleUnionType5234 = new BitSet(new long[]{0x0000020000400000L});
    public static final BitSet FOLLOW_ruleEndLine_in_ruleUnionType5256 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUnionFieldType_in_entryRuleUnionFieldType5291 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleUnionFieldType5301 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBaseTypeRef_in_ruleUnionFieldType5348 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDefType_in_ruleUnionFieldType5375 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConstValue_in_entryRuleConstValue5410 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleConstValue5420 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBooleanRef_in_ruleConstValue5467 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNumberRef_in_ruleConstValue5494 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStringRef_in_ruleConstValue5521 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleListSeparator_in_entryRuleListSeparator5557 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleListSeparator5568 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_29_in_ruleListSeparator5605 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEndLine_in_entryRuleEndLine5647 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleEndLine5658 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_41_in_ruleEndLine5695 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_42_in_ruleBOOL5748 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_43_in_ruleBOOL5765 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_44_in_ruleBaseType5810 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_45_in_ruleBaseType5827 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_46_in_ruleBaseType5844 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_47_in_ruleBaseType5861 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_48_in_ruleBaseType5878 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_49_in_ruleBaseType5895 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_50_in_ruleBaseType5912 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_51_in_ruleBaseType5929 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_52_in_ruleBaseType5946 = new BitSet(new long[]{0x0000000000000002L});

}